私は電子商取引サイトに「mini-cart」を持っています。 "ミニカート"の場合は、テーブルに項目を追加するのにforeachを使います。knotckout js foreach IE 7と8で自動的に行を追加する
「ミニカート」はドロップダウンで、それはかみそりファイルからレンダリングされます。 「ミニカート」を閉じてもう一度開くと、自動的にすべての行が自動的に追加されます。だから毎回私は「ミニカート」を閉じてもう一度開きます。すべての行がもう一度追加されます。
カートを開くと、このコードが実行されます。
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)を行います。毎回自分でそれをリロードする必要があります。しかし、インターネットエクスプローラ7と8は動作していないようです。
いつもテーブルをクリアするにはどうしますか?または、ビューモデルがこれを独自に把握できますか?
ありがとうございました。
UPDATE:
スプライス方法は、何らかの理由で、配列を空にしていないようでした。 cart.Items([])に変更すると、作業が開始されました。
おそらく、これをjsFiddleで再現できますか? –
ちょうど答えが見つかりました。 cart.Items.splice(0)はなんらかの理由で配列を空にしていないようでした。それをcart.Items([])に変更しなければならなかった。スプライスがうまくいかない理由は非常に奇妙です。 – jinxen