77

Angular apps use the ng-click() attribute rather than the the onclick event.

Why is this?

4

2 回答 2

113

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-clickAngular 表达式进行赋值,几乎所有这些都是隐式的:

<a ng-click="yourVar = 42">Go</a>
于 2013-11-28T21:15:01.877 回答
74

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

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

于 2012-08-10T15:34:12.770 回答