0

私が構築している e コマース サイトに「ミニカート」があります。「ミニカート」の場合、 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 では動作しないようです。

毎回テーブルを「クリア」する方法はありますか? または、ビューモデルはこれを独自に把握できますか?

ありがとう。

アップデート:

splice メソッドが何らかの理由で配列を空にしなかったようです。cart.Items([]) に変更すると、動作し始めました。

4

2 に答える 2

0

cart.items(null);を設定します。IEとは何の関係もありません!

于 2012-05-02T16:41:10.477 に答える
0

IE では、長さパラメーターが必要です。空のままにすると、関数は何もしません。次のように呼び出しますItems.splice(0, Items().length)

于 2012-05-02T20:57:51.980 に答える