我有一个AngularJS工厂用于一些常见的本地存储操作。这是针对不同变量的一组常用功能。我正在构建它,以便根据需要操作哪个变量来重复功能。可能不是一个优雅的方式去这个开放的选项。如何在AngularJS工厂中重用函数?
工厂看起来如下。有没有办法根据变量重用函数,而没有太多的代码膨胀?
angular.module('app.datastore', [])
.factory('DataStore', function() {
var venue = angular.fromJson(window.localStorage['venue'] || '[]');
var prize = angular.fromJson(window.localStorage['prize'] || '[]');
function persist_venue() {
window.localStorage['venue'] = angular.toJson(venue);
}
return {
list_venue: function() {
return venue;
},
get_venue: function(venueId) {
for (var i=0; i<venue.length; i++) {
if (venue[i].id === venueId) {
return venue[i];
}
}
return undefined;
},
create_venue: function(venueItem) {
venue.push(venueItem);
persist_venue();
},
list_prize: function() {
return prize;
},
get_prize: function(prizeId) {
for (var i=0; i<prize.length; i++) {
if (prize[i].id === prizeId) {
return prize[i];
}
}
return undefined;
},
create_prize: function(prizeItem) {
venue.push(prizeIem);
persist_prize();
}
};
});
您的代码在第一次返回后无法访问! –
是的!我发现了这个菜鸟的错误。我已经编辑了这个问题,询问如何更好地分解/重用代码 – zeeshan
您有一个工厂 - 现在您可以在整个角度应用程序中重复使用该工厂,并在需要时将其注入到不同的控制器中。或者你想重复使用什么? – shershen