在将用户带到该页面之前,我使用resolve
来确定网址中的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;
})
}
任何帮助表示赞赏,
感谢。
答案 0 :(得分:1)
再次问好userMod2。
如果您不想加载该页面,则需要返回被拒绝的承诺。你可以这样做:
function ($location, usefulService, $route) {
return usefulService.isValidQuestionID($route.current.pathParams.id)
.then(function (result) {
if (result == false) {
$location.path('/');
return $q.reject();
}
});
}