Angularjs 角度-路线未等待解决
我正在使用Angularjs 角度-路线未等待解决,angularjs,Angularjs,我正在使用resolve确定URL中的ID是否实际有效(通过API调用),然后再将用户带到该页面 然而,我发现有那么一瞬间,它确实进入了我的路线中指定的页面 一旦结果出来,你怎么才能真正地进去呢 因此,我的路线代码看起来: .when("/story/:id", { templateUrl: "views/story.html", controller: 'Story' , controllerAs: 'story', resolve:{
resolve
确定URL中的ID是否实际有效(通过API调用),然后再将用户带到该页面
然而,我发现有那么一瞬间,它确实进入了我的路线中指定的页面
一旦结果出来,你怎么才能真正地进去呢
因此,我的路线代码看起来:
.when("/story/:id",
{
templateUrl: "views/story.html",
controller: 'Story' ,
controllerAs: 'story',
resolve:{
"check":function($location, usefulService, $route){
var myPromise = usefulService.isValidQuestionID($route.current.pathParams.id);
myPromise.then(function(result) {
if (result == false){
$location.path('/');
}
})
}
}
}
)
然后是我服务中的实际API调用方法:
self.isValidQuestionID = function(id) {
return $http.get(API + '/isValidQuestionID', {
headers:{
idtocheck: id
}
})
.then(function(res){
return res.data.success;
})
}
感谢您的帮助
谢谢。好的,再次你好,用户mod2 如果不想加载页面,则需要返回被拒绝的承诺。您可以通过以下方式完成此操作:
function ($location, usefulService, $route) {
return usefulService.isValidQuestionID($route.current.pathParams.id)
.then(function (result) {
if (result == false) {
$location.path('/');
return $q.reject();
}
});
}
哈哈-嗨。我打算在上一篇帖子上发表评论,不过我觉得这里更容易。太棒了!这很有效。然而,我不完全理解,通过做一个被拒绝的承诺,是什么阻止了它像以前那样加载页面?现在就真正理解它“创建一个延迟的,然后立即拒绝它”