Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度解析被拒绝,但页面仍在加载_Javascript_Angularjs_Resolve - Fatal编程技术网

Javascript 角度解析被拒绝,但页面仍在加载

Javascript 角度解析被拒绝,但页面仍在加载,javascript,angularjs,resolve,Javascript,Angularjs,Resolve,这个resolve函数在其他任何地方都可以使用,我不明白为什么当承诺被拒绝时配置文件页面仍然在执行。我们通过登录、从存储中删除令牌,然后尝试导航到配置文件页面,产生了这个bug。它将完成所有身份验证步骤并注销。它点击重定向行,但仍然加载配置文件页,并抛出错误,因为身份验证已被清除 你能提供的任何帮助都会很好。如果你需要更多信息,请告诉我 app.config(“$routeProvider”) /profile路由始终解析,因为auth始终返回已解析的承诺(或者更好地说:它不会返回已拒绝的承诺,

这个resolve函数在其他任何地方都可以使用,我不明白为什么当承诺被拒绝时配置文件页面仍然在执行。我们通过登录、从存储中删除令牌,然后尝试导航到配置文件页面,产生了这个bug。它将完成所有身份验证步骤并注销。它点击重定向行,但仍然加载配置文件页,并抛出错误,因为身份验证已被清除

你能提供的任何帮助都会很好。如果你需要更多信息,请告诉我

app.config(“$routeProvider”)


/profile
路由始终解析,因为
auth
始终返回已解析的承诺(或者更好地说:它不会返回已拒绝的承诺,也不会引发异常)。正确的代码是:

.when('/profile', {
    templateUrl: '/templates/profile.html',
    controller: 'ProfileController',
    resolve: {
        auth: function (SessionService) {
            return SessionService.resolve()
        }
    }
}).

请注意,
auth
handler返回承诺是非常重要的。如果省略
return
关键字,则会导致隐式
returnundefined
。这毫无意义,但仍被视为已解决承诺。

解决失败时,我是否还需要返回$q.reject@dfsq
SessionService.resolve()
需要返回将被解析或拒绝的承诺。或
抛出错误(相当于拒绝)。我可以看到,在
resolve
方法中,您需要添加
return$q.reject({auth:false})
.when('/profile', {
    templateUrl: '/templates/profile.html',
    controller: 'ProfileController',
    resolve: {
        auth: function (SessionService) {
            return SessionService.resolve()
        }
    }
}).