Кутові програми використовують 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дозволяє. Чому це має бути так, я не маю уявлення.)