找不到Angular $资源更新方法

时间:2013-01-11 21:12:40

标签: angularjs

我正在关注Angular主页,并且我已经扩展了$ resource来添加这样的更新方法:

angular.module('user', ['ngResource']).
factory('User', function($resource) {
  var User= $resource('/user/:id', {
    update: {
      method: 'PUT'
    }
  });

  User.prototype.update = function(cb) {
    return User.update({  // this line throws the error
      id: this.id
    }, angular.extend({}, this, {
      _id: undefined
    }), cb);
  };

然而跑步:

$scope.user.update()

抛出 TypeError:对象函数h(a){v(a || {},this)}没有方法'update'

我现在看不到我错过的任何帮助

3 个答案:

答案 0 :(得分:9)

我发现问题实际上我需要为paramDefaults arg传递一个空对象:

var User= $resource('/user/:id', {}, {
    update: {
      method: 'PUT'
    }

}

答案 1 :(得分:0)

您正在使用缩小的angularjs版本,因此您必须使用array notation。只需在数组中注入所需的服务,然后输入函数:

angular.module('user', ['ngResource']).
factory('User', ['$resource', function($resource) {
  var User= $resource('/user/:id', {
    update: {
      method: 'PUT'
    }
  });

  User.prototype.update = function(cb) {
    return User.update({
      id: this.id
    }, angular.extend({}, this, {
      _id: undefined
    }), cb);
  });
}]);

注意:这同样适用于您的指令,控制器......

答案 2 :(得分:0)

在资源实例中,方法名称以$。为前缀。

$scope.user.$update({}, cb);