角度付きアプリは、onclick
イベントではなく、ng-click()
属性を使用します。
どうしてこれなの?
ng-clickはangular expression。Angular式はAngular scope 。ng-click属性を持つ要素またはその要素の祖先にバインドされます。
Angular式言語はフロー制御ステートメントを含まず、変数を宣言したり、関数を定義することはできません。これらの制限は、テンプレートが変数にのみアクセスし、コントローラーまたはディレクティブによって利用可能になった関数を実行できることを意味します。
Angularはonclick
属性の意味を変更しません。パラレルng-click
属性を追加して、 Angular expression を取ります。 onclick
は、Angularを使用している場合でも、プレーンな古いJavaScriptコードを使用します。
実際には、クリックハンドラーで行うことは、Angularスコープ内のいくつかの変数を変更する、または変更するAngularスコープ内の関数を呼び出すJavaScriptコードからそれを行うには(onclick
に配置するもののように)一連のステップが必要です。
scope.$apply
を呼び出して、変更した変数の更新を監視しているすべての人に通知されるようにしますこれは次のようになります。
<a onclick="var $scope = angular.element(event.target).scope(); $scope.yourVar = 42; $scope.$apply()">Go</a>
ng-click
およびAngular代入の式を使用すると、そのほとんどすべてが暗黙的です。
<a ng-click="yourVar = 42">Go</a>