Die Funktion SetterForCatanCtrl
wird nur einmal ausgeführt, wenn angular auf eine Anweisung ngController
trifft, während sie Ihre App bootstrappt. Wenn dies geschieht, existiert das Element, auf das Sie vom DOM zugreifen möchten, noch nicht.
Wenn die DOM-Manipulation von einem Controller aus nicht empfohlen wird, können Direktiven die Art von Problemen lösen, vor denen Sie stehen. Ihr Anwendungsfall kann mit CSS gelöst werden und nur Klassen wechseln, aber ich denke, Sie möchten mehr als nur ein Hintergrundbild setzen.
Sie fragen nicht nach benutzerdefinierten Anweisungen, also könnte eine schnelle Lösung mit der ngClick-Anweisung erfolgen und eine Methode aufrufen, die Bilder wechseln kann
Beispiel HTML
%Vor%und JS
%Vor%Wenn Sie also auf eine Schaltfläche klicken, erhalten Sie eine ID und verwenden diese, um ein Element aus dem DOM zu erhalten. Aber lassen Sie mich wiederholen, eine Richtlinie für diesen Anwendungsfall ist eine bessere Wahl.
JSFiddle: Ссылка
pd: Wenn Sie jQuery laden, können Sie mit angular.element(<selector>)
Elemente aus dem DOM auswählen.
edit: Hinzufügen eines Direktivenbeispiels
Die Verwendung einer Anweisung ist einfacher, da Sie einfach ein Ereignis an das Element binden können, auf das die Anweisung angewendet wird
HTML
%Vor%JS
%Vor%Tags und Links angularjs