AngularJS: Wie stoppe ich die Ereignisausbreitung von ng-click?

8

Ich habe Anweisungen, die so etwas tun:

%Vor%

Ja, es ist notwendig, eine jQuery-Way-Bindung für diesen Fall zu erstellen.

Und jetzt möchte ich diese Ereignis (Klick) Propagierung stoppen, wenn eine Bedingung erfüllt ist.

Versucht zu tun:

%Vor%

aber es hat nicht geholfen.

hier zum Beispiel fiddle - Ссылка

    
Stepan Suvorov 18.02.2015, 14:37
quelle

5 Antworten

7

In Ihrem Fall können Sie die Propagierung nicht stoppen, da click -Ereignis auf demselben Element passiert, es gibt nur zwei verschiedene Handler.

Sie können jedoch die Tatsache nutzen, dass dies sowohl im Controller ngClick als auch in der Direktive das selbe -Ereignisobjekt ist. Sie können also eine Eigenschaft für dieses Ereignisobjekt festlegen und in der Anweisung nachsehen:

%Vor%

und in der Direktive:

%Vor%

Demo: Ссылка

    
dfsq 18.02.2015, 14:46
quelle
1

Haben Sie versucht, die Priorität dieser Direktive zu verringern, um sicherzustellen, dass sie nach der ng-click-Direktive bindet? Ich gehe davon aus, dass die Ereignisse in der Reihenfolge ausgelöst werden, in der sie gebunden waren, was wiederum von der Priorität der ng-click-Anweisung gegenüber der Direktive bestimmt wird.

Sie benötigen auch stopImmediatePropagation, um zu verhindern, dass weitere Handler auf demselben Element ausgelöst werden. stopPropagation verhindert nur, dass das Ereignis an die übergeordneten Handler weitergegeben wird.

    
James Gaunt 18.02.2015 14:44
quelle
1
%Vor%     
Manik Thakur 23.06.2016 13:44
quelle
0

Es gibt hier keine Ereignisausbreitung, da Sie eine Schaltfläche haben und Sie Ereignisse auf demselben Element haben, das nicht zum übergeordneten Element des untergeordneten Elements wird, d. h. hier ist keine Ereignisdurchblutung oder Ereigniserfassung enthalten.

    
A.B 18.02.2015 14:42
quelle
0

Sie verbinden beide Ereignisse mit der Schaltfläche. Überprüfen Sie das Element, wenn Sie das zweite Ereignis registrieren

%Vor%

Showcase

    
Mx. 18.02.2015 14:44
quelle