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];
};
});
왜 당신은 단지 하나의 필터를 생성하고 매개 변수로 당신이 그것으로 원하는 배열을 전달하려는 해달라고 :
또는, 필터에 해당 기능을 추출 할 수 있습니다? –