Angularjs 过滤数组中的不同对象属性


"Empl": [
{
"id": 1,
"name": "Jhon",
"phone": "9999999999",
"address": {
"city": "Pune",
"address_line1": "ABC road",
"address_line2": "XYZ building",
"postal_code": "12455"
}
}
Search: <input type="text" ng-model="query"></input>
<tr ng-repeat="data in Empl | filter : {name:query,
address:{city:query}}">

如果我们使用相同的查询字符串来过滤数组中对象的两个不同属性,过滤器不起作用。

您希望将筛选器逻辑移出模板并作为函数移入控制器,然后根据函数进行筛选。

如果查询与项目匹配,或者名称的小写值与小写值或查询匹配,或者如果城市的小写值与查询的小写值匹配,则函数返回 true,否则返回 false。

<tr ng-repeat="data in Empl | filter : search">

$scope.search = function(item) {
if (!$scope.query || 
(item.name.toLowerCase().indexOf($scope.query.toLowerCase()) != -1) || 
(item.city.toLowerCase().indexOf($scope.query.toLowerCase()) != -1)             
){
return true;
}
return false;
};

最新更新