0

私は電子商取引サイトに「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([])に変更すると、作業が開始されました。

+0

おそらく、これをjsFiddleで再現できますか? –

+0

ちょうど答えが見つかりました。 cart.Items.splice(0)はなんらかの理由で配列を空にしていないようでした。それをcart.Items([])に変更しなければならなかった。スプライスがうまくいかない理由は非常に奇妙です。 – jinxen

答えて

0

Set cart.items(null); IEとは関係ありません!

0

IEでは、lengthパラメータが必要です。空のままにすると、関数は何もしません。このように呼びなさい:Items.splice(0, Items().length)

関連する問題