为什么我们需要ng-click?

Ban*_*San 73 javascript web-applications angularjs

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

为什么是这样?

rak*_*ice 107

Angular不会改变onclick属性的含义; 它添加了parallel ng-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>
Run Code Online (Sandbox Code Playgroud)

并且使用ng-click和分配的Angular表达式,几乎所有这些都是隐含的:

<a ng-click="yourVar = 42">Go</a>
Run Code Online (Sandbox Code Playgroud)


小智 72

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

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