我正在建设的电子商务网站中有一个“迷你购物车”。对于“迷你购物车”,我使用 foreach 将项目添加到表中。
“迷你购物车”是一个下拉菜单,它是从 razor 文件呈现的。当我关闭“迷你购物车”并再次打开它时,它会自动将所有行再追加一次。所以每次我关闭“迷你购物车”并再次打开它。所有的行都被追加一次。
当购物车打开时,此代码将运行。
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([]) 时,它开始工作。