2013-07-19 101 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