我从后端服务器接收到的数据结构如下:
{
name : "Mc Feast",
owner : "Mc Donalds"
},
{
name : "Royale with cheese",
owner : "Mc Donalds"
},
{
name : "Whopper",
owner : "Burger King"
}
对于我的看法,我想要“倒置”这个列表。也就是说,我想要列出每个所有者,并为该所有者列出所有的汉堡包。我可以通过在筛选器中使用underscorejs函数groupBy
来实现这一点,然后将其与ng-repeat
指令一起使用:
JS:
app.filter("ownerGrouping", function() {
return function(collection) {
return _.groupBy(collection, function(item) {
return item.owner;
});
}
});
HTML:
<li ng-repeat="(owner, hamburgerList) in hamburgers | ownerGrouping">
{{owner}}:
<ul>
<li ng-repeat="burger in hamburgerList | orderBy : 'name'">{{burger.name}}</li>
</ul>
</li>
代码本来是按预期工作的,但是当渲染列表时出现了一个巨大的错误堆栈信息,其中包含了错误消息"10 $digest iterations reached"。我很难看出我的代码如何创建了一个无限循环,这是这个消息所暗示的。有人知道为什么吗?
这里是一个包含该代码的plunk链接: http://plnkr.co/edit/8kbVuWhOMlMojp0E5Qbs?p=preview