从 ng-重复在<tr>自定义过滤器中不接受参数



在我的应用程序中,我使用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-作为结果的数组,从过滤器返回。所以你可以写下你自己的条件如何过滤它

最新更新