angular-ui-router: lösen Sie auf der root-Zustand

Soweit ich das verstanden habe, ui.router

Haben Sie $stateProvider

drin ist, kann man schreiben $stateProvider.state()

schreiben Sie

    .state('account', {
        url: '/account',
        template: '<ui-view/>'
    })
    .state('account.register', {
        url: '/register',
        templateUrl: '/account/views/register.html',
        data: { title: 'Create Account' },
        controller: 'AccountRegister'
    })

aber 'account' ist ein Kind eine Art root-Zustand.

Also mein Gedanke ist, den root-Zustand des ui.router hat eine <ui-view/>, wie 'account' hat die Vorlage '<ui-view/>', so index.html wäre der root-Zustand. Auch 'home' mit url: '/' wäre oder nicht eher ein Kind dieses root-Zustand.

und wenn ich bin in der Lage, Zugriff auf den root-Zustand und sagen, es sollte lösen ein Benutzer service diese aufgelöst Wert sollte auf alle Staaten (oder besser für jeden Staat, der ist ein Kind des Wurzel-Zustands, aka alle). Das Benutzer-service-Versprechen macht ein $http.get('/api/user/status') und es gibt {"user":{id: "userid", role: "role"}} or {"user":null}
Dies würde garantieren, dass der Wert, der zurückgegeben wird, durch den Benutzer-service wird immer aufgefüllt.

Wie erhalte ich Zugriff auf den root-Zustand und sagen, es beheben sollten, z.B. User.get()?

Oder lass es mich anders formulieren.

Einem user-Objekt vorhanden sein, um alle Controller.
Die Informationen über den aktuell angemeldeten Benutzer geliefert wird, durch ein $http.get('/api/user/status")
Das ist das problem und ich bin auf der Suche für eine CHEMISCHE Lösung, die, vorausgesetzt die api bedient, ist zu 100% sicher, dass ein user-Objekt gesetzt ist, aka das Versprechen wird immer erfüllt, auch bekannt als "warten auf die Verheißung zu beheben, bevor Sie fortfahren".

  • Ich löste es anders. Wenn sich ein Benutzer anmeldet $window.sessionStorage.token eingestellt ist. In das Modul .config : $rootScope.$on('$locationChangeStart',function(){ $rootScope.loggedin = !!window.sessionStorage.token;}) dann in der Ansicht ng-show="$root.loggedin" oder ng-show="!$root.loggedin" funktioniert zuverlässig und besser als ui-router $stateChangeStart. Der Betreuer ist nicht hilfreich bei allen entweder.
  • Ich nehme an, Sie sind vertraut mit der Verwendung des Staates zu lösen Vermögen? github.com/angular-ui/ui-router/wiki#resolve
  • Dieser Artikel beschreibt die Verwendung des resolve-Eigenschaft, um pre-load-Ressourcen für ALLE Routen: jvandemo.com/....
  • Ja, aber ich war auf der Suche für eine Lösung, die ist TROCKEN. Und, wie ich schrieb, Benutzer meldet sich an -> token gespeichert sessionStorage. Auf der server-Seite, die Ressource dienen Endpunkt der token auf Gültigkeit überprüft. Und es gibt eine AuthInterceptor Dienst, leitet zu einer login-Bildschirm wenn der status 401 oder 403.
  • Der ganze Punkt, der zweite Artikel ist, dass es eine CHEMISCHE Lösung für das, was Sie suchen.
  • Nein, es ist nicht, ich muss angeben beheben: in jeder route (state). Auch ist es nicht eine Antwort auf die ursprüngliche Frage, die etwa anbringen lösen der root-Zustand, auch bekannt als die Wurzel allen Staaten (Routen).

InformationsquelleAutor | 2014-05-21
Schreibe einen Kommentar