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

时间:2017-07-23 04:31:45

标签: angularjs filter

 "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}}">

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

1 个答案:

答案 0 :(得分:0)

您希望将过滤器逻辑移出模板并作为函数进入控制器,然后对函数进行过滤。

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

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