首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在转角用户界面路由器中实现中间件

在转角用户界面路由器中实现中间件
EN

Stack Overflow用户
提问于 2016-03-22 13:26:06
回答 1查看 1.5K关注 0票数 1

设想情况:

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

如何使用ui路由器在角1.3中实现这样的功能?

谢谢

编辑

这就是我所做的,它似乎正在起作用,但我不确定这是否是最好的解决方案。

config.js

代码语言:javascript
复制
$stateProvider.state('account-recovery', {
    url: '/account-recovery/:token',
    controller: 'AccountRecovery'
});

$stateProvider.state('verify', { ... });

$stateProvider.state('reset-pwd', { ... });

account-recovery.js

代码语言:javascript
复制
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);
        }
    }

}
EN

回答 1

Stack Overflow用户

发布于 2016-03-22 14:34:40

对主模块使用run函数:

代码语言:javascript
复制
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');
      // }
      //});
    });
 }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36155628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档