Зачем нам нужен нг-клик?
Угловые приложения используют ng-click()
атрибут, а не onclick
событие.
Почему это?
2 ответа
ng-click содержит угловое выражение. Угловые выражения оцениваются в контексте угловой области, которая связана с элементом, имеющим атрибут ng-click, или предком этого элемента.
Язык угловых выражений не содержит операторов управления потоком и не может объявлять переменные или определять функции. Эти ограничения означают, что шаблоны могут обращаться только к переменным и запускать функции, предоставляемые контроллером или директивой.
Угловой не меняет смысла onclick
атрибутов; это добавляет параллель ng-click
атрибут, чтобы взять угловое выражение. 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
и угловое выражение для присваивания, почти все это неявно:
<a ng-click="yourVar = 42">Go</a>