我正在关注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'
我现在看不到我错过的任何帮助
答案 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);