错误:达到$ $ digest()迭代

时间:2017-02-02 16:56:37

标签: angularjs ionic-framework

我有以下代码重复并显示购物车的项目。

<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:function(){

        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

    }

当我运行上面的代码时,我得到Error:10 $ digest()迭代。中止!我的控制台出错了。

有谁能帮我理解这里有什么问题?非常感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

问题是每当getOrderedByRetailer()被执行时,angularjs将其结果视为新结果,即使看起来像之前的结果。当函数返回数组时,它是common problem。因此,如果函数的结果仅依赖于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();