Angularne aplikacje używają atrybutu ng-click()
zamiast zdarzenia onclick
.Dlaczego potrzebujemy ng-click?
Dlaczego tak jest?
Angularne aplikacje używają atrybutu ng-click()
zamiast zdarzenia onclick
.Dlaczego potrzebujemy ng-click?
Dlaczego tak jest?
ng-click przechowuje wyrażenia kątowe. Wyrażenia kątowe są oceniane w kontekście Angula scope, który jest powiązany z elementem mającym atrybut ng-click lub przodkiem tego elementu.
Kątowy język wyrażeń nie zawiera instrukcji kontroli przepływu i nie może zadeklarować zmiennych ani zdefiniować funkcji. Te ograniczenia oznaczają, że szablony mogą tylko uzyskiwać dostęp do zmiennych i uruchamiać funkcje udostępniane przez kontroler lub dyrektywę.
Kątowa nie zmienia znaczenia atrybutu onclick
; dodaje równoległy atrybut ng-click
, aby pobrać Angular expression. onclick
pobiera zwykły stary kod JavaScript, nawet jeśli używasz Angular.
Praktycznie rzecz biorąc, załóżmy, że to, co robisz w module obsługi kliknięć, zmienia niektóre zmienne w zakresie kątowym lub wywołuje funkcję w zakresie kątowym, który zmienia niektóre zmienne. Aby to zrobić z kodu JavaScript (jak to, co można umieścić w onclick
) wymaga kilka kroków
scope.$apply
, tak aby coś oglądania aktualizacje zmiennych, które zostały zmienione zostanie powiadomionyta wygląda następująco:
<a onclick="var $scope = angular.element(event.target).scope(); $scope.yourVar = 42; $scope.$apply()">Go</a>
iz ng-click
i kątowym wypowiedzi dla zadania, prawie wszystko jest niejawna:
<a ng-click="yourVar = 42">Go</a>
ta powinna być odpowiedź – alaboudi