Javascript 角度解析被拒绝,但页面仍在加载
这个resolve函数在其他任何地方都可以使用,我不明白为什么当承诺被拒绝时配置文件页面仍然在执行。我们通过登录、从存储中删除令牌,然后尝试导航到配置文件页面,产生了这个bug。它将完成所有身份验证步骤并注销。它点击重定向行,但仍然加载配置文件页,并抛出错误,因为身份验证已被清除 你能提供的任何帮助都会很好。如果你需要更多信息,请告诉我 app.config(“$routeProvider”)Javascript 角度解析被拒绝,但页面仍在加载,javascript,angularjs,resolve,Javascript,Angularjs,Resolve,这个resolve函数在其他任何地方都可以使用,我不明白为什么当承诺被拒绝时配置文件页面仍然在执行。我们通过登录、从存储中删除令牌,然后尝试导航到配置文件页面,产生了这个bug。它将完成所有身份验证步骤并注销。它点击重定向行,但仍然加载配置文件页,并抛出错误,因为身份验证已被清除 你能提供的任何帮助都会很好。如果你需要更多信息,请告诉我 app.config(“$routeProvider”) /profile路由始终解析,因为auth始终返回已解析的承诺(或者更好地说:它不会返回已拒绝的承诺,
/profile
路由始终解析,因为auth
始终返回已解析的承诺(或者更好地说:它不会返回已拒绝的承诺,也不会引发异常)。正确的代码是:
.when('/profile', {
templateUrl: '/templates/profile.html',
controller: 'ProfileController',
resolve: {
auth: function (SessionService) {
return SessionService.resolve()
}
}
}).
请注意,
auth
handler返回承诺是非常重要的。如果省略return
关键字,则会导致隐式returnundefined
。这毫无意义,但仍被视为已解决承诺。解决失败时,我是否还需要返回$q.reject@dfsqSessionService.resolve()
需要返回将被解析或拒绝的承诺。或抛出错误(相当于拒绝)。我可以看到,在resolve
方法中,您需要添加return$q.reject({auth:false})
。
.when('/profile', {
templateUrl: '/templates/profile.html',
controller: 'ProfileController',
resolve: {
auth: function (SessionService) {
return SessionService.resolve()
}
}
}).