Навіщо нам потрібний ng-клік?


75

Кутові програми використовують ng-click()атрибут, а не onclickподію.

Чому це?


Таким чином, ви можете дозволити користувачам натискати на вимкнені елементи, мабуть. (Це щось ng-clickдозволяє. Чому це має бути так, я не маю уявлення.)
Wilson F

Відповіді:


73

ng-click містить кутовий вираз. Кутові вирази обчислюються в контексті кутового обсягу , який пов'язаний з елементом , що має атрибут нг клацання або предок цього елемента.

Мова виразу Angular не включає оператори керування потоком і не може оголошувати змінні або визначати функції. Ці обмеження означають, що шаблони можуть отримувати доступ лише до змінних та запускати функції, доступні контролером або директивою.


110

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>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.