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();
            }
        });
}

哈哈-嗨。我打算在上一篇帖子上发表评论,不过我觉得这里更容易。太棒了!这很有效。然而,我不完全理解,通过做一个被拒绝的承诺,是什么阻止了它像以前那样加载页面?现在就真正理解它“创建一个延迟的,然后立即拒绝它”