Angular.js: Ein Klick auf das untergeordnete Element löst seinen eigenen ng-Klick und den des Elternteils aus

Erstellt am 3. Dez. 2013  ·  9Kommentare  ·  Quelle: angular/angular.js

Wenn ich ein <div> mit einem ng-click und dann ein <button> darin mit einem separaten ng-click , werden durch Klicken auf die Schaltfläche beide ng-click Handler.

Ich habe Igors uralte PR dafür gefunden (#31!), aber es scheint, dass die stopPropagation() er hinzugefügt hat, irgendwo dazwischen verloren gegangen sind.

Ich habe versucht zu halbieren, aber festgestellt, dass es in 1.2.3, master, 1.1.5, 1.1.3, 1.0.6 oder 1.0.3 nicht funktioniert. Ich habe in der obigen PR versucht, zwischen dem Commit von Master und Igor zu halbieren, aber die Änderungen sind so alt geworden (0.10.x), dass meine Test-App überhaupt nicht funktioniert.

Einfacher Testfall, um dies auf Plunkr zu reproduzieren.

Hilfreichster Kommentar

Sie müssen nur den Code $event.stopPropagation() für das untergeordnete div beim Klickereignis hinzufügen

Alle 9 Kommentare

Es scheint, dass der Aufruf stopPropagation() von 1752c8c44a7058e974ef208e583683eac8817789 entfernt wurde.

@tbosch Bitte treffen Sie eine Entscheidung, ob dies wie erwartet funktioniert oder ob wir etwas tun können, um mit dieser Situation umzugehen.

wir können die Weitergabe nicht standardmäßig stoppen, da es keine Möglichkeit gibt, sie aufzuheben.

Es gibt gültige Anwendungsfälle dafür, dass die Weitergabe nicht gestoppt wird.
Das Stoppen der Verbreitung würde diese Anwendungsfälle nicht mehr möglich machen, da wir die Verbreitung nicht aufheben können.

ZB Anwendungsfall:
Liste von Elementen mit einem "Veröffentlichen"-Button. Wenn Sie auf eines dieser Elemente klicken, sollte das Element als das ausgewählte Element hervorgehoben werden. Dies sollte auch der Fall sein, wenn der "Veröffentlichen"-Button eines nicht ausgewählten Artikels gedrückt wird.

Im Moment ist das möglich, siehe diesen Punk: http://plnkr.co/edit/jVIovi0L9Hgo1Bl9t72O?p=preview

Schließen Sie dies, da es wie erwartet funktioniert.

Sie müssen nur den Code $event.stopPropagation() für das untergeordnete div beim Klickereignis hinzufügen

@gomteshhatgine auf Handy oder ionisch hat es nicht funktioniert. es macht Kinder-ng-Klick auch nicht ausgelöst.

@gomteshhatgine in meinem Fall wird es immer noch ausgelöst, wenn die Eltern auftreten. Hast du einen anderen Ansatz?

@maceonrails Keine Ahnung von Handy, ich habe es nicht versucht

@xenogew es sollte funktionieren
Können Sie bitte Code-Snippet teilen?

@gomteshhatgine danke. es hat funktioniert.

Funktioniert nicht mehr

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen