Кутові програми використовують ng-click()
атрибут, а не onclick
подію.
Чому це?
Відповіді:
ng-click містить кутовий вираз. Кутові вирази обчислюються в контексті кутового обсягу , який пов'язаний з елементом , що має атрибут нг клацання або предок цього елемента.
Мова виразу Angular не включає оператори керування потоком і не може оголошувати змінні або визначати функції. Ці обмеження означають, що шаблони можуть отримувати доступ лише до змінних та запускати функції, доступні контролером або директивою.
Angular не змінює значення onclick
атрибута; він додає паралельний ng-click
атрибут, щоб прийняти вираз Angular . onclick
бере звичайний старий код JavaScript, навіть коли ви використовуєте Angular.
Практично кажучи, припустимо, що ви робите в обробнику кліків зміну деяких змінних в області 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>
ng-click
дозволяє. Чому це має бути так, я не маю уявлення.)