我正在尝试使用ng-repeat在Angular中使用自定义过滤器。问题是我的数据没有正确传递。
我的HTML:
<div class="card" ng-repeat="acqui in acquis | orderBy:'date':true | fieldFilter: this">
我的过滤器:
.filter('fieldFilter', function() {
return function(acqui, $scope) {
if($scope.fieldFilter.length > 0) {
console.log($scope.fieldFilter);
for(let i = 0; i < $scope.fieldFilter.length; i++) {
if(acqui.field === $scope.fieldFilter[i]) {
return acqui;
}
}
} else {
return acqui;
}
}
});
我试图将ng-repeat中的acqui与$ scope变量进行比较,但由于某些原因acqui.field未定义,我真的不知道该尝试什么,即使我确定它是什么简单。
答案 0 :(得分:2)
你无法将整个$scope
传递给你的角度过滤器(尽管想到它会是不好的方法)。您可以通过在过滤器名称后面提到它来传递过滤后的对象。
ng-repeat="acqui in acquis | orderBy:'date':true | fieldFilter: fieldFilter"
过滤强>
.filter('fieldFilter', function() {
//fieldFilter will have passed `fieldFilter` object from `$scope`
//where as `acquis` is an array.
return function(acquis, fieldFilter) {
if(fieldFilter.length > 0) {
console.log(fieldFilter);
for(let i = 0; i < fieldFilter.length; i++) {
//here you have `acquis` not acqui
//if(acqui.field === fieldFilter[i]) {
// return acqui;
//}
}
} else {
return acqui;
}
}
});