在$ transitions中$ routeChangeStart中的下一个等价物是什么

时间:2017-09-28 02:42:44

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

我正在angularjs中构建基于权限的访问控制应用程序。我希望$ transitions中的参数等于$ routeChangeStart中的'next'参数。

  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;
            }

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

1 个答案:

答案 0 :(得分:0)

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

有关详细信息,请参阅docs for the Transition class

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;
            }

我强烈建议您阅读Transition Hooks Guide