设想情况:
如何使用ui路由器在角1.3中实现这样的功能?
谢谢
编辑
这就是我所做的,它似乎正在起作用,但我不确定这是否是最好的解决方案。
config.js
$stateProvider.state('account-recovery', {
url: '/account-recovery/:token',
controller: 'AccountRecovery'
});
$stateProvider.state('verify', { ... });
$stateProvider.state('reset-pwd', { ... });在account-recovery.js中
class AccountRecovery {
static get $inject() {
return ['$state' ...];
}
constructor($state, ...) {
this.$state = $state;
this.token = this.$state.params.token || '';
this.doSomeAsync();
}
async doSomeAsync() {
try {
const response = await getSomethingFromServer();
if (response == null || response.data == null) {
console.error('No response');
}
const user = response.data;
if (user.this) {
this.$state.go('reset-pwd');
}
else if (user.that) {
this.$state.go('verify');
}
}
catch (err) {
console.error(err);
}
}
}发布于 2016-03-22 14:34:40
对主模块使用run函数:
angular
.module('myApp')
.run(runFn);
runFn.$inject = ['$rootScope', '$state', 'myService'];
function runFn($rootScope,$state, myService) {
$rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams){
//In here you can use the $state service , i.e.
//if(toState.name === 'account-recovery'){
// myService.getUser().then(function(user){
// if(user){
// $state.go('reset-pwd')
// }
// else{
// $state.go('verify');
// }
//});
});
}https://stackoverflow.com/questions/36155628
复制相似问题