2014-04-30 102 views
1

我試圖找到上單擊篩選的好方法,基於一個布爾值嵌套數組內的過濾器。角 - 基於嵌套數組布爾

我目前的範圍如下所示

$scope.persons = [ 
    { 
    firstName : 'Drew', 
    lastName : 'Minns', 
    views : [ 
     { 
     name : 'View 1', 
     support : true 
     }, 
     { 
     name : 'View 2', 
     support : false 
     } 
    ], 
    }, 
    { 
    firstName : 'Peter', 
    lastName : 'Parker', 
    views : [ 
     { 
     name : 'View 1', 
     support : false 
     }, 
     { 
     name : 'View 2', 
     support : false 
     } 
    ], 
    } 
    ]; 

我期待添加各種基於每個視圖對象的布爾值的過濾器。我遇到的問題是,如果不迭代每個數組,就無法訪​​問該值。這樣做會導致難以訪問每個單獨的值而不引用數組編號。

我想隱藏基於特定的「視圖」對象是否具有在支撐區域真或假的父對象。

再次,我要做到這一點就點擊,這樣的想法是,你點擊一個按鈕「查看1」,僅用於支持具有真正價值的父對象顯示出來。每個「視圖」都會有多個按鈕,因此我希望能夠根據對視圖的支持提供向下鑽取的操作。

這裏有一個plunkr http://plnkr.co/edit/ipi8vKEbxps2H89HTg00?p=preview

回答

1

您可以使用角JS的「過濾器」功能來做到這一點。 Plunkr例如,下面

http://plnkr.co/edit/LHTpRqHbTxEAslY0rd5J?p=preview

相關變化
<ul ng-repeat="view in person.views | filter:{ support: true }"> 

編輯:對於你想要什麼,我拼湊一個快速自定義過濾器:http://plnkr.co/edit/LHTpRqHbTxEAslY0rd5J?p=preview

+0

權,但我想爲每個「視圖」設置一個過濾器。所以它並不隱藏視圖,而是一般人。 – drewisthe

+0

Gotcha。這有點棘手 - 你需要編寫一個自定義的過濾器來迭代數組。這是不是你可以用鹼AngularJS – Casao

+0

我已經與自定義過濾器的大致輪廓,做你想做什麼更新避免。用搜索詞更新$ scope.searchName。您也可以爲$ scope.searchName創建一個數組,並更新函數以遍歷它。 – Casao