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;
}
我希望在使用 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;
}