ui-router:在$ stateChangeEvent上打开模态

时间:2014-09-25 09:59:10

标签: angularjs angular-ui-bootstrap angular-ui-router

我的应用中的某些州需要进一步验证。例如,编辑状态应该提示用户输入一次性密码。

我很乐意横向解决这个问题:将元数据附加到需要额外auth的状态(即state.requiresExtraAuth:true),并在状态更改事件上插入一些模态逻辑。注意:我所追求的是状态确实加载并且用户可以看到它,但是模式禁止用户在不输入密码的情况下继续。

我尝试添加一个' onEnter'我在事件监听器函数中获取的toState对象参数的属性,但它没有工作:)。

这样的事情是可能的/您将如何设计此用例?

1 个答案:

答案 0 :(得分:0)

在您申请的run方法中。

add.run(function($rootScope, $state, $modal){
    $rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){ 
        if(toState.name != 'app.home') {
            $state.go('app.login');
            // or open modal
            $modal.open({...});
        }
    });
});

此事件将帮助您检查用户尝试访问的状态,并在需要时重定向到登录表单。