Angular - 路线不等待解决

时间:2016-04-20 18:45:19

标签: angularjs

在将用户带到该页面之前,我使用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;
      })
}

任何帮助表示赞赏,

感谢。

1 个答案:

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