2013-07-19 152 views
1

,我有以下数据:AngularJS:通过内部数组对象场过滤

organizations:[{ 
       name: "foo", 
       contacts: [{ 
          firstName = "John", 
          lastName = "Doe", 
          email = "[email protected]" 
          },...] 
       },...] 

然后,我有一个表,我列出所有的组织,我想知道是否有可能来过滤行表根据firstName过滤器或电子邮件过滤器。

例如,我有这样的代码:

<input type="text" id="name" ng-model="search.name"> 

<tr ng-repeat="organization in organizations | filter:search"> 
    <td>{{organization.name}}</td> 
    <td>{{client.contacts[0].firstName}} {{ client.contacts[0].lastName }}</td> 
    <td>{{client.contacts[0].email}}</td> 
</tr> 

它只能由“姓名”字段的作品过滤。我试过这样的事情:

<input type="text" id="firstName" ng-model="search.contacts"> 

但它在联系人数组中的对象的所有字段中搜索,但我想具体搜索firstName。我能怎么做?

+0

并ü尝试

+0

我尝试了但不工作我认为,因为联系人是一个数组。 – fpavone

回答

-1

使用类似filter:filterBy的过滤功能。

实施例(依赖于underscore.js):

scope.filterBy = function(row) { 
    return !!_.where(row.contacts, {firstName:scope.search.name}).length; 
} 
+2

有一点需要注意的是过滤器需要快速。如果出于任何原因,你会发现过滤器会让你放慢速度,试试看$过滤器属性,然后手动过滤你的数组,然后在模板ng中重复过滤数组。 –

+0

确实@LiviuT。对于少量的行,过滤器应该很好。 – DanS