【发布时间】:2018-03-20 23:44:33
【问题描述】:
在 AngularJS 记录显示(带有过滤器)中,我有一个多选区域数组,用户可以从中进行选择,以了解某个项目是否在某个区域可用。
数组返回值列表,如
['001','010','200']
基于所选地区的 ID。然后根据 JSON 值的 JSON 记录列表对其进行检查,如下所示
territoriesnotavailable: "001, 085, 090"
每条记录要么将此设置为 null,要么有一个从一到多个数字的列表。
我目前使用以下代码(customFilter),如果您只选择一个值,它就可以完美地工作。如果在多选中选择的区域在区域不可用列表中,它基本上会使项目过滤掉
function CustomTerritoryFilter() {
return function(data, query) {
if (query.length === 0) return data;
if (data) return data.filter(function(item) {
for (var i = 0; i < query.length; i++) {
var queryitem = query[i]["id"];
if(item.territoriesnotavailable) {
stringB = item.territoriesnotavailable;
} else {
stringB = 'xxxxxxxx';
}
stringA = queryitem;
if (!(stringB.indexOf( stringA ) > -1)) {
return data;
}
}
});
return [];
};
}
因此,如果我只选择一个过滤器(例如,导致查询 ['010']。这会出现在可供记录的区域中。它会按预期消失。但如果我选择任何不在其中的值地区不可用该项目再次出现..如果任何选定的地区出现在列表中,我需要记录消失,无论任何没有出现
【问题讨论】:
-
我怀疑我需要在某个时候添加一个失败标志,以停止更多检查
标签: arrays angularjs json multi-select angularjs-filter