gpt4 book ai didi

javascript - AngularJS 具有多个值的过滤器转发器

转载 作者:行者123 更新时间:2023-12-03 07:03:11 25 4
gpt4 key购买 nike

我有一个中继器,我需要根据文本字段中输入的文本进行过滤,所以我已经这样做了

<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”“name”中的任何项目?

更新:如果有人好奇,我最终使用了以下答案中建议的过滤器:

  $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;
};

最佳答案

您可以指定一个函数的名称来过滤结果,然后在 Controller 中实现过滤逻辑,而不是这样做。

<tr ng-repeat="i in filteredItems = (iso3166 | filter: filterFn)">

在 Controller 中:

scope.filterFn = function(item) {
if(//item meets criteria) {
//returning true will put the item into the ng-repeat data
return true;
}
return false;
}

关于javascript - AngularJS 具有多个值的过滤器转发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36945868/

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