如何向角度资源添加回调?

时间:2013-05-01 00:52:48

标签: javascript rest angularjs

我有一个显示项目列表的视图:

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

最后我在初始化控制器以加载项目列表时使用查询。

function ItemCtrl($scope, Item) {

    $scope.items  = Item.query();
    ....

在同一页面上,我可以创建新项目并调用save()将它们保存到服务器。但是当我这样做时,我想更新视图以显示新项目,而不是使用query()重新加载整个列表。由于视图是官方记录,我假设在成功保存项目后我应该将其推送到项目的末尾。这应该在save()完成之后完成,所以我想知道如何添加/指定对save函数的回调。

编辑:save()返回已保存项目的副本(如果成功),这样我就可以确保该项目已成功保存在服务器上。

1 个答案:

答案 0 :(得分:2)

来自the documentaton here:

Item.$save(function(item, putResponseHeaders) {
  //item => saved user object
  //putResponseHeaders => $http header getter
});