1

さて、ピクルスはこちらです:

メニュー項目を反復処理するために ng-repeat を使用しています。

<!-- start the list/loop -->
<ion-list ng-repeat="this in menuItems.items track by $index" type="item-text-wrap">

    <a class="item" ng-click="addToCart({{this}})">{{this.name}}
        <span class="badge badge-stable">{{theCart[$index].product.qty}}</span>
    </a>

</ion-list>
<!-- end the list/loop -->

$index は特定のアイテムにバインドされておらず、配列内の位置だけであるため、カート 'theCart[$index].product.qty' 内のアイテムから値を取得しようとすると問題が発生します。配列内の 2 オブジェクトの深さの一意の識別子を取得する必要があるため、Angular が提供する双方向データ バインディングを使用して正しい値を確実に取得できます。

theCart: [{
    product: {
        id: 1,
        section: 'sides',
        name: 'mayo',
        price: 7,
        outOfStock: '',
        qty: 1
    }
}, {
    product: {
        id: 0,
        section: 'sides',
        name: 'ranch',
        price: 6,
        outOfStock: '',
        qty: 1
    }
}];

洞察をお寄せいただきありがとうございます。

4

1 に答える 1

0

あなたの質問を正しく理解できたかどうかわかりません。

menuItems.itemsしかし、それが何らかの理由でその項目にプロパティがない製品の配列であり、その項目にプロパティがある別の製品の配列であるとqty仮定theCartしますqty。そして、あなたが望むのは、反復している製品の利用可能な数量を配列から取得することです。次のように、フィルター 'filter'theCartを使用してそれを行うことができます。

<ion-list ng-repeat="item in menuItems.items" type="item-text-wrap">
    <a class="item" ng-click="addToCart(item.id)">{{item.name}}
        <span class="badge badge-stable">
           {{(theCart | filter:{product:{id:item.id} })[0].product.qty}}
        </span>
    </a>
</ion-list>

これは非常に醜い方法であると言わざるを得ません。このようにすることは誰にもお勧めしません。コントローラーでこれらの 2 つの配列の「結合された配列」を生成し、代わりにその「結合された配列」を反復する方がはるかに優れています

于 2014-09-05T04:31:52.647 に答える