Обновить: это должно быть возможно в angular -ui-router по 1.0.0alpha0
. См. Примечания к выпуску https://github.com/angular-ui/ui-router/releases/tag/1.0.0alpha0 и проблема https://github.com/angular-ui/ui-router/issues/1018, которую я создал.
Я хотел бы получить доступ к имени состояния и другим атрибутам, которые приложение выполняет при использовании angular ui-router при работе над решением.
Причина: я хочу асинхронно загружать некоторые пользовательские данные (включая их права доступа), прежде чем разрешить приложению вводить эту страницу.
В настоящее время это невозможно, потому что ввод значения $state в точку разрешения указывает на состояние, в котором вы перемещаете форму, а не на ту, к которой вы переходите.
Я знаю, что могу:
- получить toState в другом месте с помощью $rootScope ('$ stateChangeStart') и сохранить его в моей службе настроек, например. Но я думаю, что это немного грязно.
- жестко закодировать состояние в разрешении, но я не хочу повторно использовать мое решение для всех страниц
Я также создал проблему с ui-router github (пожалуйста, + 1, если вам интересно!): https://github.com/angular-ui/ui-router/issues/1018
Вот мой код до сих пор. Любая помощь ценится!
.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
});
}
}
});
});