我有一个转发器,我需要由文本输入到文本字段来过滤,所以这样做AngularJS滤波器中继器具有多个值
<tr ng-repeat="i in filteredItems = (iso3166 | filter: {alpha_2: countryQuery})">
的数据是对象的JSON数组, $ scope.iso3166:
[{
"name": "Afghanistan",
"alpha_2": "AF",
"alpha_3": "AFG",
"country-code": "004",
"iso_3166-2": "ISO 3166-2:AF",
"region": "Asia",
"sub-region": "Southern Asia",
"region-code": "142",
"sub-region-code": "034",
"license": "unclassified",
"prohibited": "unclassified",
"size": "unclassified"
}, ...
所以你可以键入“af”和表格过滤器来显示阿富汗。
现在我需要输入什么输入到字段返回匹配,而不仅仅是针对alpha_2
键,而是name
。例如,“af”不仅应该匹配“阿富汗”,还应匹配“中非共和国”。
我看着Angular 1.4.1文档,看到了逗号方法,但它似乎执行AND比较。作为
<tr ng-repeat="i in filteredItems = (iso3166 | filter: {alpha_2: countryQuery, name: countryQuery })">
有没有办法不执行“或”在这种情况下,这样无论是输入过滤器,其中查询是“alpha_2” 或“名”的任何项目?
更新:如果有人好奇,我结束了使用过滤器,如下面的回答表明:
$scope.countryFilter = function (value) {
if (angular.isUndefined($scope.countryQuery) || $scope.countryQuery === '') {
return true;
}
return value.name.indexOf($scope.countryQuery) >= 0 || value.alpha_2.indexOf($scope.countryQuery) >= 0;
};
您是否尝试过:'我在filteredItems |过滤:countryQuery'? – theblindprophet
是的,但这将匹配任何字段。例如,我不想将“区域:非洲”与“af”相匹配。只是“alpha_2”或“名称”字段。 – Steve