2015-02-08 69 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