eckiger ui-router: $ state info von toState in resolute holen

Aktualisieren: dies sollte im eckigen-ui-router ab möglich sein1.0.0alpha0. Siehe die Versionshinweisehttps://github.com/angular-ui/ui-router/releases/tag/1.0.0alpha0 und das Themahttps://github.com/angular-ui/ui-router/issues/1018 Ich erschuf.

Ich möchte auf den Namen des Staates und andere Attribute zugreifen, zu denen die App navigiert, wenn ich an der Lösung arbeite.

Der Grund: Ich möchte einige Benutzerdaten (einschließlich ihrer Zugriffsrechte) asynchron laden, bevor ich der App erlaube, diese Seite aufzurufen.

Derzeit ist dies nicht möglich, da das Injizieren von $ state in die Auflösung auf den Status verweist, zu dem Sie vom Formular weg navigieren, und nicht auf den Status, zu dem Sie navigieren.

Ich weiss ich kann:

Holen Sie sich den toState mit $ rootScope ('$ stateChangeStart') woanders hin und speichern Sie ihn beispielsweise in meinem Einstellungsservice. Aber ich finde es etwas chaotisch.Codieren Sie den Status in die Auflösung, aber ich möchte meine Auflösung nicht für alle Seiten wiederverwenden

Ich habe auch ein Problem auf dem UI-Router Github erstellt (bitte + 1, wenn Sie interessiert sind!):https://github.com/angular-ui/ui-router/issues/1018

Hier ist mein Code soweit. Jede Hilfe dankbar!

.config(function($stateProvider) {

    $stateProvider.state('somePage', {
        // ..
        resolve: {
            userData: function($stateParams, $state, Settings) {
                return Settings.getUserData() // load user data asynchronously
                    .then(function (userData) {
                        console.log($stateParams);
                        console.log($state);
                        // Problem: $state still points to the state you're navigating away from
                    });
            }
        }
    });
});

Antworten auf die Frage(2)

Ihre Antwort auf die Frage