2017-01-01 3 views
0

Ich habe ein einfaches eckiges Projekt eingerichtet, wo ich eine Basisvorlage habe. Diese Basisvorlage importiert alle erforderlichen Bibliotheken und führt auch eine einfache jQuery-Funktion darin aus. So etwas wie das:Javascript-Funktion hat keine Auswirkungen auf Angular-Vorlagen

Also, im Grunde fügt die Funktion eine Klasse zu allen Eingabeelementen in meinem DOM. Das erste Eingabeelement außerhalb der ng-view wird von dieser Funktion beeinflusst.

Nehmen wir an, ich habe Eingabeelemente in meinen ng-view-Vorlagen, diese sind jedoch von der Funktion nicht betroffen. Warum das? Es scheint, dass meine jQuery-Funktion nicht auf das DOM meiner Angular-Vorlagen zugreifen kann.

Gibt es dafür eine Lösung? Was ist der ideale Weg, um eine gemeinsame Funktion auszuführen, die sich auf Angular-Vorlagen auswirken kann?

Danke.

+0

Warum tun Sie nicht (oder suchen, wenn eine bereits existiert) eine Direktive? – Maxime

+0

Und eine Klasse zu jeder Eingabe hinzufügen scheint, dass Sie eine einfache CSS-Klasse verwenden sollten: 'input {your_code}' – Maxime

+0

@Maxime Warum möchten Sie einen Elementnamen als Selektor über eine Klasse verwenden? – 1252748

Antwort

0

Die Vorlagen sind nicht irgendwie implizit "enthalten"; Sie erhalten konstruiert durch den eckigen Code im laufenden Betrieb (und potenziell auf asynchrone Ereignisse wie HTTP-Anfragen, die auftreten, nachdem die Hauptseite Onload-Ereignis ausgelöst hat). Sie können also nicht garantieren, dass das DOM von eckigen Konstrukten konstruiert wurde, es sei denn, Sie arbeiten irgendwie mit eckigen Klammern zusammen.

Der "richtige" Weg, um dies wahrscheinlich zu erreichen, um eine eckige Direktive für 'Eingabe' Tags zu schreiben, die die Klasse hinzufügt (anstatt jQuery wie oben zu verwenden); und sicherlich ist es die "richtige" Möglichkeit, Event-Listener usw. hinzuzufügen.

Verwandte Themen