0

我正在 angularjs 中构建基于权限的访问控制应用程序。我想要 $transitions 中的参数相当于 $routeChangeStart 中的“下一个”参数。

  function ($rootScope, $state, $transitions, LoginService) {
        console.log('------------------in app.js run');
        $state.go('login');
        $transitions.onStart({}, function ($transitions) {
                var newToState = $transitions.$to();
                if(checkPermissionForView(// param similar to next))
        });

    }

我定义了一项服务,用于检查登录用户是否有权访问视图

  checkPermissionForView : function (view) {
                if (!view.requiresAuthentication) {
                    return true;
                }

                return userHasPermissionForView(view);
            }

  userHasPermissionForView : function(view){
                if(!isLoggedIn()){
                    return false;
                }
            }

  isLoggedIn : function () {
                var user = JSON.parse(localStorage.getItem("user"));
                console.log(user);
                return user != null;
            }

如您所见,我想将“下一个”信息传递给服务。$transitions.$to() 是否产生与 $routeChangeStart('next') 中的 next 相同的结果?我是新来的。TIA

4

1 回答 1

0

是的,用于Transition.to()获取将被激活的状态。

有关更多详细信息, 请参阅Transition 类的文档。

function ($rootScope, $state, $transitions, LoginService) {
        console.log('------------------in app.js run');
        $state.go('login');
        $transitions.onStart({}, function (transition) {
                var newToState = transition.to();
                if(!checkPermissionForView(newToState)) {
                         return $state.target('login');
                }
        });
}

...

checkPermissionForView : function (state) {
                if (!state.requiresAuthentication) {
                    return true;
                }

                return userHasPermissionForState(state);
            }

  userHasPermissionForState : function(view){
                if(!isLoggedIn()){
                    return false;
                }
            }

  isLoggedIn : function () {
                var user = JSON.parse(localStorage.getItem("user"));
                console.log(user);
                return user != null;
            }

我强烈推荐阅读过渡挂钩指南

于 2017-09-29T01:14:03.540 回答