Wie verwende ich einen Controller für zwei Direktiven?

8

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.

    
tgkokk 05.06.2013, 08:29
quelle

2 Antworten

5

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.

    
callmekatootie 05.06.2013, 09:09
quelle
4

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: Ссылка

    
Oliver 05.06.2013 09:03
quelle

Tags und Links