Jquery ruft nicht in $ viewContentLoaded von Angular auf

8

jquery Funktionen können im $ viewContentLoaded Event des Angular Controllers nicht aufgerufen werden, hier ist der Code für dasselbe.

%Vor%

Ist hier irgendeine Konfiguration erforderlich? Ich habe sogar noConflict () versucht; var $ jq = jQuery.noConflict (); Benötigt es eine andere Konfiguration?

Danke, Abdul

    
Abdul Azeez 18.08.2012, 18:23
quelle

1 Antwort

21

Zunächst einmal, machen Sie keine DOM-Manipulation vom Controller. Tun Sie es stattdessen aus Anweisungen.

Sie können dasselbe in der Direktiven-Link-Methode tun. Sie können auf die element zugreifen, für die die Direktive angewendet wird.

Stellen Sie sicher, dass Sie jquery vor angularjs scripts laden, dann grawlUI, three, angularJS und schließlich Ihr Anwendungsskript. Unten ist ein Direktivenbeispiel

%Vor%

angularjs hat jQuery lite eingebaut. Wenn Sie volle jquery nach angular laden, da jQuery bereits definiert ist, überspringt das vollständige jquery-Skript die Ausführung.

== Aktualisiere nach deinem Kommentar ==

Ich habe Ihre Frage nach dem Kommentar nochmals überprüft und festgestellt, dass Inhalt, der durch Ajax geladen wird, an ein div in Ihrer eckigen Ansicht angehängt wird. Dann möchtest du das juery-Plugin element.tree () auf diesen Inhalt anwenden. Leider funktioniert das obige Beispiel nicht, da es auf das Verknüpfen ausgelöst wird, das passiert ist, bevor Ihr Inhalt von der Ajax-Antwort an das Element mit der Ihnen angezeigten Direktive angehängt wurde. Aber keine Sorge, es gibt einen Weg :) tho es ist schnell und schmutzig, aber es ist nur für Demo.

Nehmen wir an, das ist Ihr Controller

%Vor%

Nun, die Direktive, die sich im Controller-Bereich befindet (sie benutzt denselben Bereich wie der Controller)

%Vor%

Der zweite Ansatz wäre $ broadcast oder $ emitter event vom Controller (hängt davon ab, wo die Direktive ist, außerhalb oder im Bereich des Controllers), nachdem Ihr Ajax abgeschlossen ist und Sie den Inhalt vom Server bekommen. Dann sollte Direktive für dieses Ereignis abonniert werden und es behandeln, indem es die übergebenen Daten (Daten = Inhalt als String) erhält und den Rest wie oben gezeigt ausführt.

Die Sache ist, droht, dass Inhalt von Ajax als Daten den ganzen Weg zu Richtlinie, dann injizieren Sie es in Element, in dem Sie es rendern und Baum Plugin auf diesen Inhalt anwenden möchten.

    
Milan Jaric 19.08.2012, 23:30
quelle

Tags und Links