Warum brauchen wir ng-click?

74

Angular Apps verwenden ng-click()eher das Attribut als das onclickEreignis.

Warum ist das?

BanksySan
quelle
So können Sie Benutzern anscheinend erlauben, auf deaktivierte Elemente zu klicken. (Dies ist etwas ng-clickerlaubt. Warum dies so sein sollte, habe ich keine Ahnung.)
Wilson F

Antworten:

73

ng-click enthält einen Winkelausdruck. Angular Ausdrücke werden im Rahmen eines Winkel ausgewertet Umfang , die an das Element gebunden ist , mit der ng-Klick - Attribut oder einen Vorfahren dieses Elements.

Die Angular-Ausdruckssprache enthält keine Flusssteuerungsanweisungen und kann keine Variablen deklarieren oder Funktionen definieren. Aufgrund dieser Einschränkungen können Vorlagen nur auf Variablen zugreifen und Funktionen ausführen, die von einem Controller oder einer Direktive bereitgestellt werden.

groner
quelle
109

Angular ändert die Bedeutung des onclickAttributs nicht. Es fügt das parallele ng-clickAttribut hinzu, um einen Winkelausdruck zu verwenden . onclickNimmt einfachen alten JavaScript-Code, auch wenn Sie Angular verwenden.

Angenommen, Sie ändern in einem Klick-Handler einige Variablen in einem Angular-Bereich oder rufen eine Funktion in einem Angular-Bereich auf, die einige Variablen ändert. Um dies mit JavaScript-Code (wie dem, was Sie eingeben würden onclick) zu tun, sind einige Schritte erforderlich

  • Holen Sie sich einen Verweis auf den Umfang
  • Weisen Sie die Variable zu oder rufen Sie die Funktion auf
  • Rufen Sie auf, scope.$applydamit alles benachrichtigt wird, was nach Aktualisierungen der von Ihnen geänderten Variablen sucht

Das sieht so aus:

<a onclick="var $scope = angular.element(event.target).scope(); $scope.yourVar = 42; $scope.$apply()">Go</a>

und mit ng-clickund einem Winkelausdruck für die Zuweisung ist fast alles implizit:

<a ng-click="yourVar = 42">Go</a>
Rakslice
quelle