Bindet Ereignisse an AngularJS-Elementrichtlinien mit jQuery

7

Ich habe eine Richtlinie in AngularJS:

%Vor%

Und in meinem HTML benutze ich es so:

%Vor%

Was wie folgt dargestellt wird:

%Vor%

Ich möchte in der Lage sein, Ereignisse zu hören, die manuell durch jQuery ausgelöst wurden:

%Vor%

Ich möchte, dass dieses Ereignis immer dann ausgelöst wird, wenn auf die Verknüpfung geklickt wird.

Wenn ich die Eigenschaft replace auf false in der Direktive sample setze, funktioniert es. Ich schätze, das liegt daran, dass an dem Punkt, an dem das Ereignis ausgelöst wird, das Element sample nicht mehr existiert und als solches durch das innere Template ersetzt wurde.

Also, wie mache ich das?

Dies wird, wie in der Antwort unten vorgeschlagen, meinen Zweck nicht erfüllen:

%Vor%     
Milad Naseri 21.02.2014, 08:35
quelle

2 Antworten

16

Hier finden Sie die Geige

Geige

Trigger ist eine jquery-Funktion, die mit dem richtigen Handler arbeitet.

%Vor%

Hoffe, das hilft

    
Sai 24.02.2014, 19:48
quelle
4

Hier ist aktualisierte Geige: Ссылка

Es gibt mehrere Punkte, die es zu beachten gilt:

  1. Aufgrund der Art und Weise, wie eckige DOM transformiert, rate ich Ihnen, alle benutzerdefinierten Listener an den Körper anzuhängen und sie dann nach Ereignisziel zu filtern. $('body').on('myEvent.sample', 'target-selector-expr', handler) macht genau das. Wenn Sie beispielsweise benutzerdefinierte Ereignis-Listener für ngRepeat ed-Elemente verwenden, werden Ihre Handler nicht ausgeführt, da diese Elemente zum Zeitpunkt des Anhängens von Ereignissen nicht vorhanden sind.

  2. Es scheint so, als ob die jqLite-Implementierung von angular bei der Auslösung von Ereignissen etwas fehlt. Deshalb habe ich sample 's Element in jQuery ( $($element) ) eingeschlossen, weil sonst die zusätzlichen Daten nicht zum Handler gelangen würden.

Endgültige Vorlage:

%Vor%

Js:

%Vor%     
package 25.02.2014 07:17
quelle