如何在 ng-repeat 的多参数过滤器中实现循环?
How to implement a loop in a multi parameters filter in a ng-repeat?
我想在过滤器参数中做一个循环
嗨,
我正在做一个多重过滤器 table。每列作为输入以添加要过滤的字符串。
对于每一列,我在过滤器函数中使用过滤器输入调用参数名称:paramN: filter[n]
有没有办法在其中做一个循环,这样我就不必一个一个地写每个参数了?
我在一个数组中拥有我需要的一切,但我不知道如何(如果可能的话)在过滤器中调用它。
我应该使用自定义过滤器吗?如果是这样,语法是什么,它会减慢这个过程吗?
这里是我的过滤器代码:
<tr ng-repeat="folder in listFolders|
filter:{param1:filter[1],
param2:filter[2],
param3:filter[3],
...
paramN: filter[n]
} as listVisible
">
这是我的数组:
$scope.parametres=[
{int:1, libelle:'name1', variable:'param1'},
{int:2, libelle:'name2', variable:'param2'},
{int:3, libelle:'name3', variable:'param3'},
...
{int:n, libelle:'nameN', variable:'paramN'}
]
谢谢!
万一有人遇到和我一样的问题:
我在我的控制器中实现了这个功能(每次通过 ng-change
对过滤器输入进行更改时都会调用它)
$scope.filteringFunction = function(){
var filtered=angular.copy($scope.listFolders);
for(var i=0; i<$scope.parametres.length; i++){
if($scope.filter[$scope.parametres[i].int]!==''){
var filter =$rootScope.toNoCase($scope.filter[$scope.parametres[i].int]);
var param = $scope.parametres[i].variable;
filtered = filtered.filter(function (item) {
return $rootScope.toNoCase(item[param]).includes(filter);
});
}
}
$scope.listFoldersFiltered=filtered;
};
并且我稍微更改了 ng-repeat(基本上删除了过滤器并将列表 listFolders
更改为 listFoldersFiltered
)
<tr ng-repeat="folder in listFoldersFiltered as listVisible">
如果有人知道其他方法,我会洗耳恭听!
我想在过滤器参数中做一个循环
嗨,
我正在做一个多重过滤器 table。每列作为输入以添加要过滤的字符串。
对于每一列,我在过滤器函数中使用过滤器输入调用参数名称:paramN: filter[n]
有没有办法在其中做一个循环,这样我就不必一个一个地写每个参数了?
我在一个数组中拥有我需要的一切,但我不知道如何(如果可能的话)在过滤器中调用它。
我应该使用自定义过滤器吗?如果是这样,语法是什么,它会减慢这个过程吗?
这里是我的过滤器代码:
<tr ng-repeat="folder in listFolders|
filter:{param1:filter[1],
param2:filter[2],
param3:filter[3],
...
paramN: filter[n]
} as listVisible
">
这是我的数组:
$scope.parametres=[
{int:1, libelle:'name1', variable:'param1'},
{int:2, libelle:'name2', variable:'param2'},
{int:3, libelle:'name3', variable:'param3'},
...
{int:n, libelle:'nameN', variable:'paramN'}
]
谢谢!
万一有人遇到和我一样的问题:
我在我的控制器中实现了这个功能(每次通过 ng-change
对过滤器输入进行更改时都会调用它)
$scope.filteringFunction = function(){
var filtered=angular.copy($scope.listFolders);
for(var i=0; i<$scope.parametres.length; i++){
if($scope.filter[$scope.parametres[i].int]!==''){
var filter =$rootScope.toNoCase($scope.filter[$scope.parametres[i].int]);
var param = $scope.parametres[i].variable;
filtered = filtered.filter(function (item) {
return $rootScope.toNoCase(item[param]).includes(filter);
});
}
}
$scope.listFoldersFiltered=filtered;
};
并且我稍微更改了 ng-repeat(基本上删除了过滤器并将列表 listFolders
更改为 listFoldersFiltered
)
<tr ng-repeat="folder in listFoldersFiltered as listVisible">
如果有人知道其他方法,我会洗耳恭听!