Ist es möglich, mehrere Ansichten [ Ссылка mit einem Singleton-Controller zu haben?
Anwendungsfall: Ich habe eine ui-view = Header und ui-view = Inhalt. Ich ändere die Kopfzeile je nach dem aktuellen Status, um Kontextbezogene Schaltflächen anzuzeigen (dh zurückgehen, speichern, filtern usw.). Ich möchte, dass diese Schaltflächen eine Funktion im Inhaltscontroller aufrufen, aber wenn ich Folgendes mache, erzeugt sie zwei MyController-Objekte . Wenn es irgendwelche Init-Funktionen gibt, werden sie zweimal aufgerufen, was in den meisten Fällen das Doppelte der Anfragen an meinen Server ist.
%Vor%Update: Basierend auf @ pankajparkar
Mein aktueller index.html sieht so aus (vereinfacht für das Verständnis)
%Vor%Aber Ihr Vorschlag würde aus / REQUIRE Subviews
bestehen %Vor%Mit dem folgenden Controller
%Vor%Sie müssen im Grunde mit solchen Dingen in einer Art Provider (typischerweise einem Service oder einer Fabrik) umgehen, das sind Singletons, und dann können Sie das Singleton in den Controller injizieren und jede Instanz des Controllers wird das Shared / gleicher Anbieter.
Wenn Sie Hilfe bei der Implementierung benötigen, teilen Sie bitte Ihren Controller.
Obwohl ich den Vorschlägen in der anderen Antwort, die hier gepostet wird, zustimme, sollten Sie vielleicht in Betracht ziehen, die Funktionalität in einen Provider zu setzen. In den meisten Situationen ist es am besten, wenn Sie die meisten Funktionen und Daten in den Providern haben und Ihre Controller nur dafür verantwortlich sind, die Benutzerinteraktionen weiterzuleiten, um den entsprechenden Anruf bei den Providern auszulösen (und Ihr aktuelles Problem beheben würde, da sie es sind) Singletons).
Sie sollten diesen Controller außerhalb der Option views
platzieren, damit er nur einmal auf der Seite geladen wird
Tags und Links angularjs angular-ui-router