web-dev-qa-db-ja.com

なぜng-clickが必要なのですか?

角度付きアプリは、onclickイベントではなく、ng-click()属性を使用します。

どうしてこれなの?

72
BanksySan

ng-clickはangular expression。Angular式はAngular scope 。ng-click属性を持つ要素またはその要素の祖先にバインドされます。

Angular式言語はフロー制御ステートメントを含まず、変数を宣言したり、関数を定義することはできません。これらの制限は、テンプレートが変数にのみアクセスし、コントローラーまたはディレクティブによって利用可能になった関数を実行できることを意味します。

71
groner

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>
106
rakslice