在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']。并且这显示在记录的区域内可用...它会按预期消失..但如果我选择任何不在的值地区不可用该项目再次出现..如果任何选定的区域出现在列表中,我需要记录消失,无论是否有
答案 0 :(得分:0)
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 false;
}
}
return true;
});
return [];
};
}
答案 1 :(得分:0)
这是我确定的代码。它基本上将标志设置为1(显示),然后检查过滤器中的每个数字..如果列表中只有一个数字出现,则标志设置为零。在检查结束时,如果flaG REMAins为1
,则会显示数据function CustomTerritoryFilter() {
return function(data, query) {
if (query.length === 0) return data;
if (data) return data.filter(function(item) {
var flag = 1;
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) {
flag = 0;
}
}
if(flag === 1) {
return data;
}
});
return [];
};
}