gpt4 book ai didi

javascript - 在 Angular ui-router 中实现中间件

转载 作者:行者123 更新时间:2023-11-27 23:11:34 25 4
gpt4 key购买 nike

场景:

  • 用户打开/myapp/recovery/:token,它会调用中间件,中间件又会将用户重定向到“验证”状态或“重置密码”状态。
  • 这两个有一个屏幕,而恢复中间件(路由器/代理/等)不会只是重定向

如何使用 ui-router 在 Angular 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);
}
}

}

最佳答案

使用主模块的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');
// }
//});
});
}

关于javascript - 在 Angular ui-router 中实现中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36155628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com