我有下面的代码重复和显示购物车的项目。
<div ng-repeat="retailer in cart.getOrderedByRetailer()" >
<ion-item>
{{retailer.retailer_name}}
</ion-item>
<ion-item class="item-icon-right canasta-item canasta-height" ng-repeat="cartitem in retailer.order_items">
{{cartitem.stockitem.product.name| limitTo: 20}}
</ion-item>
</div>
使用下面的方法,我尝试订购购物车中的物品,但我做不到
getOrderedByRetailer:函数(){
var ordered_order_items = this.content.items.reduce(function (map, obj) {
if (map[obj.stockitem.retailer] === undefined) {
//console.log(map[obj.stockitem.retailer]);
map[obj.stockitem.retailer] = {
'retailer_name': obj.stockitem.retailer,
'order_items': []
}
}
map[obj.stockitem.retailer].order_items.push(obj);
//console.info(map);
return map;
}, {});
return ordered_order_items
}
当我运行上面的代码时,我得到了一个错误:达到了10个$digest()迭代。流产!我的控制台出错了。
有人能帮我弄清楚这里出了什么问题吗?非常感谢你的帮助。
发布于 2017-02-03 05:55:48
问题是,每当执行getOrderedByRetailer()
时,angularjs
都认为它的结果是新的,甚至看起来像以前的结果。当函数返回数组时,它就是共同问题。因此,如果函数的结果仅依赖于this.content.items
,则可以这样重构代码:
<div ng-repeat="retailer in cart.getOrderedByRetailerResult" >
....
</div>
Javascript:
this.content.items = [];
//each time this.content.items are changed call getOrderedByRetailer():
this.cart.getOrderedByRetailerResult = getOrderedByRetailer();
https://stackoverflow.com/questions/42007970
复制相似问题