为什么我们需要点击?
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>