我的json对象有一个名为调性的字段,值为0或1。
[{
"id": 111,
"title": "Senior Vice President and Chief Analytics Officer",
"name": "jon doe",
"company": "Entertainment Corporation",
"keynote": 1
},
{
"id": 102,
"title": "CEO and Mobile Market Strategist",
"name": "john",
"company": "Research",
"keynote": 1
},
{
"id": 102,
"title": "CEO and Mobile Market Strategist",
"name": "john",
"company": "Research",
"keynote": 0
},
{
"id": 102,
"title": "CEO and Mobile Market Strategist",
"name": "john",
"company": "Research",
"keynote": 0
}]我想在我的应用程序中显示两种列表。一个名单上有主旨发言人,另一个名单上有基调= 0。
<li class="table-view-cell" data-ng-repeat="speaker in speakers | filter:speaker.keynote=1 ">
<span class="speaker-name">{{speaker.name}}</span>
</li>
<li class="table-view-cell" data-ng-repeat="speaker in speakers | filter:speaker.keynote=0 ">
<span class="speaker-name">{{speaker.name}}</span>
</li>发布于 2014-11-08 07:01:54
正确的语法是filter:{propertyName:'value'},所以ng-repeat="speaker in speakers | filter:{keynote:0}"将适用于您。
我建议实现这样的东西来使您的代码更加枯燥:
<ul>
<li ng-repeat="i in range"> // or i in [0,1]
<h3>Keynote: {{i}}</h3>
<ul>
<li ng-repeat="speaker in speakers | filter:{keynote:i}">
<span>{{speaker.name}}</span>
</li>
</ul>
</li>
</ul>使用Lodash自动生成range的示例:
$scope.range = _.sortBy(_.uniq($scope.speakers, 'keynote').map(function(item) {
return item.keynote;
}), function(a, b) {
return a < b;
});Live demo
对于您的评论,有一种方法可以使您的特定代码变得干燥:
<ul>
<li ng-repeat="(title, isKeynote) in {Keynote:1, Sessions:0}">
<h3>{{title}}</h3>
<ul>
<li ng-repeat="speaker in speakers | filter:{keynote:isKeynote}">
<span>{{speaker.name}}</span>
</li>
</ul>
</li>
</ul>Live demo
https://stackoverflow.com/questions/26814501
复制相似问题