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 wiederverwendenIch 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
});
}
}
});
});