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%Hier ist aktualisierte Geige: Ссылка
Es gibt mehrere Punkte, die es zu beachten gilt:
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.
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%Tags und Links angularjs jquery events angularjs-directive javascript-events