Зачем нам нужен нг-клик?

Угловые приложения используют 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>
Другие вопросы по тегам