Ich habe diesen Code:
JS:
%Vor%HTML:
%Vor% Direktive foo
funktioniert, aber Direktive bar
gibt einen Fehler aus: No controller: fooController
.
Wie kann ich das beheben, während ich meine aktuelle Struktur beibehalte (Controller ist nicht im HTML, wird aber von den Direktiven verwendet, bar
ist außerhalb von foo
und teilt den gleichen Controller, während beide seinen Bereich ändern) ? Ich habe die Diskussion hier gelesen, aber ich konnte nicht verstehen, wie es geht.
Da Ihr Ziel letztendlich darin besteht, zwischen Controllern zu kommunizieren, müssen Sie nicht denselben Controller über mehrere Direktiven hinweg verwenden (ich bezweifle, dass die Wiederverwendung Ihnen die Kommunikation ermöglichen würde). Wie auch immer, der beste Weg, dies zu tun, wäre Nutzungsdienste.
Artikel Kann ein Controller einen anderen anrufen? spricht darüber Detail, aber in einfachen Worten, erstellen Sie zuerst einen Service:
%Vor% Sie können diesen Service dann in Ihren Controllern verwenden und mit jedem Controller kommunizieren, indem Sie die Funktionen setData()
und getData()
des Service verwenden.
Sie können keinen Controller anfordern. Sie können eine Direktive anfordern, die eines der Grundelemente der aktuellen Direktive ist.
%Vor%Hier kann Bar foo erfordern und es wird foo's Controller haben: Ссылка In diesem Beispiel wird fooController einmal initialisiert.
%Vor%Hier hat bar und foo seine Instanz des fooControllers: Ссылка
Tags und Links angularjs