0

我在建立電子商務網站中有一個「迷你購物車」。對於「迷你購物車」,我使用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);所以它應該每次都重新加載它自己。但它似乎並沒有工作我的Internet Explorer 7和8.

是否有反正「清除」表每次?或者,視景模型可以自行解決這個問題嗎?

謝謝。

UPDATE:

看來,拼接方法沒有空出於某種原因陣列。當改爲cart.Items([])它開始工作。

+0

也許你可以在jsFiddle中重現這個? –

+0

剛剛找到答案。似乎cart.Items.splice(0)出於某種原因沒有清空數組。必須改變它cart.Items([]),然後它的工作。很奇怪爲什麼拼接不起作用,我認爲。 – jinxen

回答

0

設置cart.items(null); 與IE無關!

0

在IE中,長度參數是必需的。將它留空將導致該功能無法執行任何操作。像這樣調用它:Items.splice(0, Items().length)