2015-02-08 76 views
4

我想知道,我該如何放置一個過濾器ng-repeat,它只會返回具有顏色的項目?我希望在網格上方有一個名爲「顯示顏色的人」的複選框,它可以在選中時根據顏色數組的數量篩選列表,並在未選中時顯示ALL。基於陣列長度的angularjs ng-repeat過濾器

{ 
    "_id": "54d13c3f3c25d5d8123a1d62", 
    "name": "Barry", 
    "colours": ["239, 101, 128"] 
}, 
{ 
    "_id": "54d13sfg5d5d8hgf6gg", 
    "name": "John", 
    "colours": [] 
}, 
{ 
    "_id": "34d13sfg5d5d4tt6g", 
    "name": "Andrew", 
    "colours": [] 
}, 
{ 
    "_id": "44d165d5d4t77t6g", 
    "name": "Gary", 
    "colours": ["25, 234, 22", "5, 100, 255"] 
}, 

回答

10

以下將給每個人沒有顏色:

<div ng-repeat="item in items | filter: { colours: '!' }"> 

否定它再次和你有每個人的顏色:

<div ng-repeat="item in items | filter: { colours: '!!' }"> 

演示:http://plnkr.co/edit/oIl3ohe0TLMWcQlTPuY5?p=preview

+0

這是完美的,謝謝你。我不知道'!'和'!!' – 2015-02-08 20:35:02

+0

不客氣:) – tasseKATT 2015-02-08 20:37:44

2

我想你一個使用一個控制器功能來測試顏色 存在這樣的HAML/CoffeeScript中

%tr{"ng-repeat2 => "item in list | filter: hasColour(item)"} 

和hasColour是控制器功能

$scope.hasColour= (item) -> 
    item.colours.length > 0 

未經檢驗的我恐怕

+1

的模板語法是'過濾器:hasColour' – Phil 2015-06-03 05:28:12