在我的应用程序中,我使用ng repeat迭代数组,并以tabuler格式显示值。现在我想传递一个自定义过滤器,它应该从迭代数组中获取一个参数。我用以下方式做:
<tr ng-repeat="arrList in records.actualList|geneFilter:arrList.selectedArr">
"selectedArr"是"actualList"下的一个,records是父数组。
现在在我的自定义过滤器:
"use strict";
var portalApp = angular.module('filter', []);
portalApp.filter('geneFilter', function() {
return function(input,changedArr){
var out=[];
var selectedArr='';
console.log('changed Arr::'+changedArr);
return selectedArr;
}
});
在自定义筛选器中,我总是将arr值更改为"未定义"。
我很好奇它应该如何工作!
我们有循环依赖。这就是您获得undefined
的原因
arrList.selectedArr
是您在过滤器中返回的结果,应该是return out
而不是return selectedArr
<tr ng-repeat="arrList in records.actualList|geneFilter:arrList.selectedArr">
让我们试着描述一下我们所拥有的:
我用名为geneFilter
的自定义过滤器过滤records.actualList
,该过滤器接收过滤器的结果arrList
,即基于过滤数据的arrList.selectedArr
作为自变量
我就是这样看待它的:
<tr ng-repeat="item in records.actualList|geneFilter:types">
和
portalApp.filter('geneFilter', function() {
return function(input,someTypes){
var out=[];
angular.forEach(input, function(item) {
if(someTypes == "some info") {
out.push(item);
}
});
return out;
}
});
- 这里的
input
实际上是records.actualList
- out-作为结果的数组,从过滤器返回。所以你可以写下你自己的条件如何过滤它