0

我正在建设的电子商务网站中有一个“迷你购物车”。对于“迷你购物车”,我使用 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([]) 时,它开始工作。

4

2 回答 2

0

设置购物车.items(null); 与IE无关!

于 2012-05-02T16:41:10.477 回答
0

In IE, the length parameter is required. Leaving it empty causes the function to do nothing. Call it like this: Items.splice(0, Items().length).

于 2012-05-02T20:57:51.980 回答