0

läuft ich eine Fabrik auth definiert sich wie folgt:eine Funktion ausführen, bevor eine Steuerung

app.factory('auth', [function() { 
    var auth = {}; 

    auth.getUser = function() { 
     ... ... 
     // get user from cookie, cache, history, etc. 
    } 

    return auth 
}]); 

Für viele Seiten, ich will auth.getUser() immer laufen, bevor sie angezeigt werden. Zu diesem Zweck ist im Moment, ich benutze resolve, zB:

.state('home', { 
    url: '/home', 
    templateUrl: '/htmls/home.html', 
    controller: 'MainCtrl', 
    resolve: { getUser: ['auth', function (auth) { return auth.getUser() }]} 
}) 

Die Gefahr dieser Implementierung ist, ich habe viele resolve zu schreiben. Daher frage ich mich, ob es eine Möglichkeit gibt, diese Regel in Controller eher als Zustand zu implementieren. Könnte jemand helfen?

+3

Mögliche Duplikat [Initialisieren AngularJS App bevor die Controller Aufruf] (https://stackoverflow.com/questions/47391797/initialize-angularjs-app-before -calling-the-controllers) – estus

+1

Informationen zum automatischen Festlegen eines Resolvers für alle Routen finden Sie unter https://stackoverflow.com/a/33813535/3731501 – estus

Antwort

0

Versuchen Sie, den Zustand in

$rootScope.$on('$stateChangeStart', function (event, toState) { 
    //condition here and $state.go('') 
}); 

Ich bin mir nicht sicher, ob dies funktioniert überprüfen.

Verwandte Themen