在控制器中使用.then()链接时,Restangular .getList()或get()不起作用,但如果在路由中解析则有效

时间:2015-08-25 17:11:09

标签: javascript angularjs restangular

我希望能够在使用getList()get()时进行异常处理,但是如果我用户then()则返回任何有用的内容。如果删除then(),则会返回我期待的内容,但我没有异常处理。

Restangular自己documentation使用then()getList()一起使用,所以我不确定它为什么不起作用。

这是我的控制器代码:

$scope.allSubjects = Restangular.all('subjects').getList().then(handleSuccess, handleError('Error getting all subjects'));

console.log($scope.allSubjects); // -> Promise {$$state: Object}

function handleSuccess(data) {
  return data;
}

function handleError(error) {
  return function() {
    $log.warn(error);
  };
}

但是,如果我解析数据,它可以正常运行

.state('subjects', {
    url: '/subjects',
    templateUrl: 'components/subjects/list.html',
    controller: 'SubjectsListCtrl',
    controllerAs: 'vm',
    resolve: {
      getSubjectsResolve: function(Restangular) {
        return Restangular.all('subjects').getList().then(handleSuccess..., handleError...);
      }
    }
  })

我好迷路了!我不明白。

1 个答案:

答案 0 :(得分:0)

在handleSuccess中,您将返回数据。你是谁回来的?通常,您的成功函数如下所示:

function handleSuccess(response) {
    $scope.data = response.data;
}