Angularjs Angular.extend$resource,带有$resource实例的函数
我想创建一个$saveOrUpdate函数,它将接受一个成功回调,我想在$resource服务的实例上使用该函数,而不是扩展服务本身 因此,如果我想扩展该服务,我只需写下以下内容:Angularjs Angular.extend$resource,带有$resource实例的函数,angularjs,extend,angular-resource,Angularjs,Extend,Angular Resource,我想创建一个$saveOrUpdate函数,它将接受一个成功回调,我想在$resource服务的实例上使用该函数,而不是扩展服务本身 因此,如果我想扩展该服务,我只需写下以下内容: angular .module('company-registry.company') .factory('Company', Company); Company.$inject = ['$resource']; function Company($resource) { var compa
angular
.module('company-registry.company')
.factory('Company', Company);
Company.$inject = ['$resource'];
function Company($resource) {
var companyService = $resource("https://api.mongolab.com/api...", { update: { method: 'PUT' } });
angular.extend(companyService, {
saveOrUpdate: function(company, successCallback) {...}
});
return companyService;
}
这将在实际服务上创建saveOrUpdate函数,但我希望以下代码能够正常工作:
var company = new Company();
company.$saveOrUpdate(cb);
我这里有两个问题:
- 由于我的$saveOrUpdate方法必须在我的公司上调用$save或$update,因此如何引用调用函数的对象
- 如何扩展服务实例上可用的方法
extend
方法中对象的顺序很重要。取决于是要向现有对象添加新特性,还是通过扩展另一个对象来创建新特性。您可以使用this
自引用公司
,如示例所示
return angular.extend({
您好:函数(文本){
console.log(文本);
返回文本+“-OK”;
},
saveOrUpdate:函数(successCallback){
var response=this.hello(“Foo-Bar!”);
返回successCallback(response);
}
},公司服务);
什么是新公司()
?我对没有提交完整代码感到遗憾,“公司”是服务的名称。我会添加完整的代码。你能解释一下吗?我不确定这是如何扩展$resource instances可用函数的,也不知道我在哪里声明应该保存或更新哪个对象。我一定是误解了前面的问题。我已经编辑了答案。这有帮助吗?除了更改angular.extend函数中参数的顺序外,这与我的代码有什么不同?我希望$saveOrUpdate方法可用的方式与$resource对象上的$save函数可用的方式相同,而不是将此函数设置为服务级别。另外,这也不能回答我如何在$saveOrUpdate方法中引用company对象。
function Company($resource) {
var companyService = $resource("https://api.mongolab.com/api...", { update: { method: 'PUT' } });
return angular.extend({
"$saveOrUpdate":function(cb){
...
}
}, companyService);
}