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

Restangular .getList() or get() not working when chained with .then() in controller, but works if resolved in routes

我希望在使用 getList()get() 时能够进行异常处理,但是如果我使用 then(),则不会返回任何有用的信息。如果删除 then() 那么它 returns 就是我所期待的,但我没有异常处理。

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

我迷路了!没看懂。

在您的 handleSuccess 中,您正在返回数据。你要把它还给谁?通常,您的成功函数如下所示:

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