为什么我们需要ng-click?


75

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

为什么是这样?


因此,显然,您可以允许用户单击禁用的元素。(这是ng-click允许的。为什么会这样,我不知道。)
Wilson F

Answers:


73

ng-click包含一个角度表达式。在Angular范围的上下文中评估Angular表达式,该范围绑定到具有ng-click属性的元素或该元素的祖先。

Angular表达式语言不包含流控制语句,也不能声明变量或定义函数。这些限制意味着模板只能访问控制器或指令提供的变量和运行功能。


110

Angular不会改变onclick属性的含义;它添加了parallelng-click属性以采用Angular表达式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>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.