Angular应用使用ng-click()
属性而不是onclick
事件。
为什么会这样?
答案 0 :(得分:105)
Angular不会改变onclick
属性的含义;它添加并行ng-click
属性以获取Angular expression。即使您使用的是Angular,onclick
也会使用普通的旧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>
答案 1 :(得分:71)
ng-click包含一个角度表达式。角度表达式在Angular scope的上下文中进行计算,该角色绑定到具有ng-click属性的元素或该元素的祖先。
Angular表达式语言不包含流控制语句,不能声明变量或定义函数。这些限制意味着模板只能访问控制器或指令可用的变量和运行函数。