为什么我们需要ng-click?

时间:2012-08-10 13:11:35

标签: javascript angularjs web-applications

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

为什么会这样?

2 个答案:

答案 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表达式语言不包含流控制语句,不能声明变量或定义函数。这些限制意味着模板只能访问控制器或指令可用的变量和运行函数。

相关问题