Angularjs 角度ui路由器出现问题,状态为。go()

Angularjs 角度ui路由器出现问题,状态为。go(),angularjs,angular-ui-router,Angularjs,Angular Ui Router,我会检查用户是否有权访问$stateChangeStart内执行的页面 给你 $rootScope.$on('$stateChangeStart', function (event, toState) { if ($rootScope.accessRights.length > 0) { if (toState.data.accessControlled == true) { var userHasAccess =

我会检查用户是否有权访问$stateChangeStart内执行的页面

给你

$rootScope.$on('$stateChangeStart', function (event, toState) {
        if ($rootScope.accessRights.length > 0) {
            if (toState.data.accessControlled == true) {

                var userHasAccess = false;
                for (var i = 0; i < $rootScope.accessControlledPages.length; i++) {
                    if (toState.name == $rootScope.accessControlledPages[i].page) {
                        userHasAccess = true;
                        break;
                    }
                }
                //If user has access do nada, else redirect them to 404 page or page to TBD
                if (!userHasAccess) {
                    event.preventDefault();
                    $state.go('Errors');
                }   
            }
        }
        else
        {
            processPageAccess();
            $state.go(toState.name);
        }

    });
$rootScope.$on(“$stateChangeStart”,函数(事件,toState){
如果($rootScope.accessRights.length>0){
if(toState.data.accessControlled==true){
var userHasAccess=false;
对于(var i=0;i<$rootScope.accessControlledPages.length;i++){
if(toState.name=$rootScope.accessControlled页面[i].page){
userHasAccess=true;
打破
}
}
//若用户有权访问do nada,则将其重定向至404页面或页面至TBD
如果(!userHasAccess){
event.preventDefault();
$state.go('Errors');
}   
}
}
其他的
{
processPageAccess();
$state.go(toState.name);
}
});
我的问题是 $state.go('Errors')

什么都不做,我只是停留在我试图导航到访问控制页面时所在的页面上。有什么我没做的吗

if (!userHasAccess) {
   $state.go('Errors');
}
只需删除event.preventDefault()


event.preventDefault();用于取消状态转换

据我所知,您需要这样的东西来避免状态更改循环:

$rootScope.$on('$stateChangeStart',function (event, toState, toParams, fromState, fromParams) {
event.preventDefault();
// If authorized, use call state.go without triggering the event.
// Then trigger $stateChangeSuccess manually to resume the rest of the process
// Note: This is a pseudo-hacky fix which should be fixed in future ui-router versions
if (!$rootScope.$broadcast('$stateChangeStart', toState, toParams, fromState, fromParams).defaultPrevented) {
    $rootScope.$broadcast('$stateChangePermissionAccepted', toState, toParams);

    $state.go(toState.name, toParams, {notify: false}).then(function() {
        $rootScope.$broadcast('$stateChangeSuccess', toState, toParams, fromState, fromParams);
   });
}
})

例如,您可以看到,

白痴错误,没有向控制器注入$state。最近从常规角度路由移动到ui路由器,并且没有更新所有控制器

我正在尝试停止原始转换,但没有停止$state.go('Errors');确保错误状态没有数据。accessControlled=true。我认为可能与所描述的问题相同,并且已经回答了。我自己已经回答了这个问题