我有一个显示项目列表的 View :
<li ng-repeat="item in items">{{item.name}}</li>
与此相关的服务是:
angular.module('itemService', ['ngResource']).
factory('Item', function($resource){
return $resource('/api/v1/item/:itemId', {}, {
query: {method:'GET', params:{itemId : ''}, isArray : true},
get: {method:'GET', params:{itemId : ''}, isArray : false},
save: {method:'POST', params:{itemId : ''}, isArray : false},
update: {method:'PUT', params:{itemId : '@_id.$oid'}, isArray : false}
});
});
最后,当 Controller 初始化时我使用查询来加载项目列表。
function ItemCtrl($scope, Item) {
$scope.items = Item.query();
....
在同一页面上,我可以创建新项目并调用 save()
将它们保存到服务器。但是当我这样做时,我想更新 View 以显示新项目,而不是使用 query()
重新加载整个列表。由于 View 是正式记录,我认为在成功保存项目后,我应该将其推到项目的末尾。这应该在 save()
完成后完成,因此我想知道如何添加/指定保存函数的回调。
编辑:save()
返回已保存项目的副本(如果成功),以便我可以确保该项目已成功保存在服务器上。
最佳答案
Item.$save(function(item, putResponseHeaders) {
//item => saved user object
//putResponseHeaders => $http header getter
});
关于javascript - 如何向 Angular 资源添加回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16311245/