我以这种方式使用工厂作为资源提供者
angular.module('resources.users').factory('Users', ['serverResource', function (serverResource) {
return serverResource('users');
}]);
其中服务器资源为REST API提供服务器资源... 但是这个表单中有发票项目的api / invoices / {invoice_id} / item / 所以我需要在工厂构造函数中传递变量。
我发现可以这样做:
angular.module('resources.invoiceItem').factory('InvoiceItem', ['serverResource', function (serverResource) {
return function (invoiceID) {
if(!angular.isNumber(invoiceID)) {
console.log('InvoiceID has to be number!');
return null;
}
return serverResource('invoices/' + invoiceID + '/item');
}
}]);
然后像这样实例化
var insertedItem = new InvoiceItem(inserted_id);
一切似乎都没问题,即使在debuger中我也可以使用$ save,$ saveOrUpdate,$ update或$ remove(由服务器资源提供)等方法,但是当我调用时
insertedItem.$saveOrUpdate(function(){}, function(){}, function(){}, function(){});
我有错误未定义不是函数我不明白为什么?我也没有理解为什么console.log(insertedItem)会给我回复
function (data) {
angular.extend(this, data);
}
我希望serverResource的实例......
所以我的问题是我做错了什么?
非常感谢您的回复
编辑:plunker http://plnkr.co/edit/VkZo5kbiNAyudb0yFPhu答案 0 :(得分:0)
您需要返回一个对象,但是返回构造函数。
将return Resource
更改为new Resource
工厂中的serverResource
。
编辑:
继续发表评论,试试这个:
return function() {
return serverResource('invoices');
}