2017-02-02 3 views
0

У меня есть следующий код, который повторяет и отображает элементы тележки.

<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() итераций. Aborting! Ошибка в моей консоли.

Может кто-нибудь помочь мне понять, что здесь не так? Очень ценю вашу помощь.

+0

'нг-повтора = "ритейлер в cart.getOrderedByRetailer()"' Это твоя проблема. Не привязывайте его к функции, но к свойству области –

ответ

1

Проблема заключается в том, когда 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(); 
Смежные вопросы