2017-07-14 1 views
0

Ich habe einen Navbar-Controller, wo ich eine Suchleiste habe, die Bücher durchsucht. In meinem navbar-ui-Router-Zustand löse ich die Bücher auf und setze sie in einen Buchservice. Dadurch kann ich dann auf alle Bücher zugreifen. Dies ist nicht nur in der Navigationsleiste, sondern ab diesem Punkt über alle Controller hinweg.Angularjs: barrierefreier Dienst für mehrere Controller einstellen

In meinem zusammenfassenden Dashboard möchte ich jedoch alle Bücher auflisten, die ich gezogen habe. Anstatt einen Anruf zu wiederholen, um die Bücher zu ziehen, möchte ich den Dienst Bücher verwenden. Wenn ich die App im Übersichts-Dashboard starte, stoße ich auf Probleme, da das Übersichts-Dashboard nicht darauf warten kann, dass der Books-Dienst von der Navigationsleiste aus ausgefüllt wird.

Meine Frage ist, wie kann ich das Übersichts-Dashboard warten, bis der Navbar-Controller den Books-Dienst auflöst?

Antwort

1

Ihre Navigationsleiste kann ein Ereignis senden und Ihr Dashboard kann darauf warten.

navbar Controller

$scope.$broadcast('booksLoaded', books); 

Übersichtsdashboard Controller

$scope.$on('booksLoaded', function(event, books) { 
    $scope.books = books; 
}); 

eine weitere Option ist eine Dienstleistung in Anspruch vorübergehend die Daten zu speichern.

angular.module('app').factory('BooksService', BooksService); 

function BooksService() { 
    return { 
     getBooks: getBooks, 
     setBooks: setBooks 
    }; 

    var _books = []; 

    function getBooks() { 
     return _books; 
    } 

    function setBooks(books) { 
     _books = books; 
    } 
} 
+0

@Marc wenn meine Antwort gearbeitet, machen Sie bitte diese die akzeptierte Antwort – Ero

+0

Ich verstehe Ihre Antwort, aber jetzt darüber nachdachte, wie sie anzuwenden. Das Problem ist, dass ich versuche, zu einem Dienst zu senden. Es sieht so aus, als wäre das verpönt, da der Service nicht wirklich Teil des Umfangs ist. Es scheint sich zu wiederholen, die Navbar-Informationen in dem Dienst zu speichern, aber dann die Übersichtsbücher von der Übertragung zu entfernen (und nicht den Dienst). Im Wesentlichen, ich versuche, navbar zu haben (Bücher zu bekommen) -> Buch-Service (Bücher zu speichern) -> Zusammenfassung (Bücher aus dem Service zu bekommen) – Marc

+0

Warum würden Sie auf den Dienst übertragen? Persönlich würde ich empfehlen, die Bücherliste von Ihrem Backend zu ziehen .... trotzdem könnten Sie das auch tun: Speichern Sie die Bücher in Bücher-Service in der Navigationsleiste, wenn sie laden, dann das Ereignis 'booksLoaded' ausstrahlen, dann in Ihrem Übersichts-Dashboard zu hören Dieses Ereignis und laden Sie die Bücher aus dem Dienst, anstatt sie durch die Sendung zu übergeben – Ero

Verwandte Themen