0
我有3個過濾器我需要爲一個項目編寫,他們所有3人做同樣的事情,但與$ rootScope不同的數組(他們正在將數字狀態轉換爲顯示值)。添加公共代碼到一個角度過濾器模塊
我該如何編寫這段代碼,並從所有3個過濾器中調用它,並將這個實例保存在myFilters模塊中?
我沒有看到我可以放置該代碼的地方。如果我正在編寫一個服務,我會有一個可以放入的塊,但是使用過濾器,我沒有那個共同點來編寫代碼。
現在我剛把它移到了全局範圍,但我想將它移動到過濾器模塊中,所以我不必重複它3次,或將它存儲在全局範圍內。
angular.module('myFilters', [])
.filter('aStatus', function($rootScope) {
return function(id, attr) {
var objectArray = $rootScope.appConfig.aStatuses,
index = _.findIndex(objectArray, function(obj) { return obj.id === id; });
if(index < 0) {
return "";
}
if(attr) {
return objectArray[index][attr];
}
return objectArray[index];
};
})
.filter('bStatus', function($rootScope) {
return function(id, attr) {
var objectArray = $rootScope.appConfig.aStatuses,
index = _.findIndex(objectArray, function(obj) { return obj.id === id; });
if(index < 0) {
return "";
}
if(attr) {
return objectArray[index][attr];
}
return objectArray[index];
};
})
.filter('cStatus', function($rootScope) {
return function(id, attr) {
var objectArray = $rootScope.appConfig.cStatuses,
index = _.findIndex(objectArray, function(obj) { return obj.id === id; });
if(index < 0) {
return "";
}
if(attr) {
return objectArray[index][attr];
}
return objectArray[index];
};
});
你爲什麼不希望只創建一個過濾器,並通過你想要到一個數組作爲參數? –