gpt4 book ai didi

javascript - ng-repeat 表中的 AngularJS 自定义过滤器

转载 作者:行者123 更新时间:2023-12-02 21:33:50 25 4
gpt4 key购买 nike

我可以使用此自定义过滤器过滤表(特定列)中的值。数据来自多选输入的数组

完整示例: http://jsfiddle.net/d1sLj05t/1/

myApp.filter('filterMultiple',['$filter',function ($filter) {
return function (items, keyObj) {
var filterObj = {
data:items,
filteredData:[],
applyFilter : function(obj,key){
var fData = [];
if(this.filteredData.length == 0)
this.filteredData = this.data;
if(obj){
var fObj = {};
if(angular.isString(obj)){
fObj[key] = obj;
fData = fData.concat($filter('filter')(this.filteredData,fObj));
}else if(angular.isArray(obj)){
if(obj.length > 0){
for(var i=0;i<obj.length;i++){
if(angular.isString(obj[i])){
fObj[key] = obj[i];
fData = fData.concat($filter('filter')(this.filteredData,fObj));
}
}
}
}
if(fData.length > 0){
this.filteredData = fData;
}
}
}
};

if(keyObj){
angular.forEach(keyObj,function(obj,key){
filterObj.applyFilter(obj,key);
});
}
return filterObj.filteredData;
}
}]);
<tr ng-repeat="emp in empList | filterMultiple:{dept:selected}">    

当存在“销售”或“帐户”等值时完美,但当表中不存在该值时,返回所有数据(当我选择“不”或组合“不”和“销售”时)。我期望得到一个空结果或仅选定的值

最佳答案

我认为您可以使用更简单的过滤器来完成您想要的事情。您可能想尝试这样的事情:

myApp.filter('filterMultiple',['$filter',function ($filter) {
return function (items, keyObj) {
//If the value isn't defined, don't filter at all.
if (keyObj.value == undefined) {
return items;
}
//Use javascript's native Array.filter() to get only the items that match.
return items.filter(function(item) {
//Keep any items whose specified attribute includes the selected value
return item[keyObj.column].includes(keyObj.value);
})
}
}]);

对 HTML 进行轻微更改:

<tr ng-repeat="emp in empList | filterMultiple:{column:'dept', value:selected}"> 

我不确定你所说的“将‘不’和‘销售’结合起来”是什么意思,但我认为这会让你朝着正确的方向前进。

这里有一些相关链接,以防您不熟悉我在代码中所做的一些事情:

Documentation for Array.filter -- MDN

Array.filter is better than $filter('filter') -- StackOverflow

Documentation for String.includes -- MDN

关于javascript - ng-repeat 表中的 AngularJS 自定义过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60555758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com