为什么我们需要点击?

Angular应用程序使用ng-click()属性而不是onclick事件。

为什么是这样?

ng-click保存一个angular度expression式。 Angularexpression式在Angular 作用域的上下文中进行求值,Angular 作用域绑定到具有ng-click属性的元素或该元素的祖先。

Angularexpression式语言不包含stream控制语句,不能声明variables或定义函数。 这些限制意味着模板只能访问variables并运行由控制器或指令提供的function。

Angular不会改变onclick属性的含义; 它添加了并行的ng-click属性来获取一个Angularexpression式 。 即使在使用Angular时, onclick也会使用普通的旧JavaScript代码。

实际上,假设你在点击处理程序中正在做的是改变Angular范围中的某些variables,或者在Angular范围内调用一个改变某些variables的函数。 要做到这一点,从JavaScript代码(如你将放在onclick )需要一堆步骤

  • 得到范围的参考
  • 分配variables或调用函数
  • 调用scope.$apply以便观察更改的variables的任何内容都会得到通知

这看起来像:

 <a onclick="var $scope = angular.element(event.target).scope(); $scope.yourVar = 42; $scope.$apply()">Go</a> 

ng-click和一个Angularexpression式来赋值,几乎所有这些都是隐含的:

 <a ng-click="yourVar = 42">Go</a>