私が構築している e コマース サイトに「ミニカート」があります。「ミニカート」の場合、 foreach を使用してアイテムをテーブルに追加します。
「ミニカート」はドロップダウンであり、かみそりファイルからレンダリングされます。「ミニカート」を閉じて再度開くと、すべての行がもう一度自動的に追加されます。そのため、「ミニカート」を閉じて再び開くたびに。すべての行がもう一度追加されます。
カートが開かれると、このコードが実行されます。
showCart = function () {
WebService.PostJson("/services/CartService.svc/GetCart", {},
function (cartDto) {
updateCart(cartDto);
postman.deliver('cartShown', 1);
},
function () {
});
};
テーブルはこんな感じ。
<table width="100%" >
<thead data-bind="foreach: Items, stripe: Items, evenClass: 'even', oddClass: 'odd'">
<tr>
<td data-bind="text: ArticleNo">
</td>
<td data-bind="text: Name" style="width:390px;">
</td>
<td>
<input type="text" data-bind="value: Quantity" class="quantity"/>
</td>
<td class="cart-price-column">
<span class="cartRowSubTotal" style="display: none;" data-bind="text: SubTotal"></span>
</td>
<td>
<a href="#" class="erase" data-bind="click: remove">Ta bort</a>
</td>
</tr>
</thead>
</table>
updateCart は Items.splice(0); を実行します。そのため、毎回自分でリロードする必要があります。しかし、Internet Explorer 7 および 8 では動作しないようです。
毎回テーブルを「クリア」する方法はありますか? または、ビューモデルはこれを独自に把握できますか?
ありがとう。
アップデート:
splice メソッドが何らかの理由で配列を空にしなかったようです。cart.Items([]) に変更すると、動作し始めました。