2017-02-02 2 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 

    } 

を、Iエラーを取得する:10 $ digest()反復に達しました。中止!私のコンソールでエラーが発生しました。

ここで何が間違っているのか分かりますか?あなたの助けに感謝します。

+0

'NG・リピート= "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(); 
関連する問題