我在电子商务网站上有一个“小型推车”,我正在建设中。对于“迷你购物车”,我使用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。
每次都有“清理”表格吗?或者viewmodel可以自己解决这个问题吗?
感谢。
更新
似乎splice方法由于某种原因没有清空数组。当更改为cart.Items([])时,它开始工作。
答案 0 :(得分:0)
设置cart.items(null); 与IE无关!
答案 1 :(得分:0)
在IE中,长度参数是必需的。将其留空会导致该功能无效。这样称呼:Items.splice(0, Items().length)
。