淘汰js foreach在IE 7和8中自动追加行

时间:2012-05-02 09:41:18

标签: javascript internet-explorer-8 internet-explorer-7 knockout.js

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

2 个答案:

答案 0 :(得分:0)

设置cart.items(null); 与IE无关!

答案 1 :(得分:0)

在IE中,长度参数是必需的。将其留空会导致该功能无效。这样称呼:Items.splice(0, Items().length)