2013-06-04 52 views
1

我有一個用戶這樣AngularJS多燙髮

[{id:1,name:'name',parent_id:0,type:1}, 
{id:2,name:'name2',parent_id:0,type:2}, 
{id:3,name:"name1 child",parent_id:1,type:1}] 

,我試圖顯示基於PARENT_ID和類型ID的父母和孩子的用戶,以便例如ID 3 ID 1的孩子,我是過濾試圖將此

http://jsfiddle.net/U3pVM/689/

感謝您的幫助

+0

我曾試圖自定義過濾器,如圖我的jsfiddle鏈接 –

回答

1

我搞掂你喜歡擺弄它們顯示:

http://jsfiddle.net/eQP8S/

<div ng-controller="MyCtrl"> 
    <ol> 
    <li ng-repeat="user in users | filter:{parent_id:0}"> 
     {{user.name}} 
     <ol> 
       <li ng-repeat="child in users | filter:{parent_id:user.id, type:user.type}"> 
        {{child.name}} 
       </li> 
     </ol> 
    </li> 
    </ol> 
</div> 

你的主要問題是,你試圖用「過濾器」過濾器的功能,這是好的,但該功能是不允許帶任何參數。如果您確實需要創建一個需要參數的過濾器,則必須編寫自定義過濾器:http://docs.angularjs.org/guide/dev_guide.templates.filters.creating_filters

但在你的情況下,你可以使用標準的「過濾器」過濾器,並傳遞它將做你想做的事情的對象。

此外,罵你Angular開發人員創建一個抽象稱爲過濾器,然後創建一個「過濾器」過濾器。我的意思是,這有多混淆?

+1

哎呦,這是不同時的斷裂...... http://en.wikipedia.org/wiki/Relativity_of_simultaneity – rewritten

0

這不是使用過濾器的正確方法。如果您檢查文檔,您有三種選擇:

  1. 使用字符串。它將在對象中深入搜索。任何包含該字符串的深度值的對象都將與
  2. 匹配使用一個函數。它將被調用數組的元素。您應該在函數的作用域中提供任何參數,而不是作爲過濾器的參數。
  3. 使用一個對象。它將像字符串匹配一樣工作,但是用於特定屬性。

如果使用第三種情況

<li ng-repeat="child in users | filter:{parent_id: user.id, type: user.type}"> 

而且打印孩子的名字

{{ child.name }} 

然後你就會看到正確的結果。

http://jsfiddle.net/waAc7/