2

次のようなドロップダウンを持つViewModelがあります。

<select data-bind="options: orderDropdown,
    value: selectedOrder, 
    optionsCaption: '---',
    event: { change: loadOrderDetails }">
</select>

次に、loadOrderDetailsは次のように設定されます。

// loads details of selected order
self.loadOrderDetails = function () {
    $.ajax({
        url: "/api/OrderDetails",
        data: { id: self.selectedOrder() },
        type: "GET",
        success: function (data) {
            self.orderDetails(data);
        }
    });
}

問題は、コンソールを見ると次のようにページが読み込まれたときにこのイベントが発生するように見えることです。

GET http://localhost:52559/api/OrderDetails 400 (Bad Request)

ページの読み込み時にこれが発生するのを防ぐ方法はありますか?

4

2 に答える 2

3

これは私にとってはうまくいきました。

<select data-bind="options: orderDropdown,
    value: selectedOrder, 
    optionsCaption: '---',
    event: { change: function() { loadOrderDetails() } }">
</select>

SOに関するこの特定の回答から解決策を得ました: https://stackoverflow.com/a/10119888/1301774

于 2014-09-26T23:00:19.483 に答える
3

ノックアウト オプション バインディングに関する私の経験では、値が定義されていない場合、ロード時に更新がトリガーされます。

したがって、「selectedOrder」が値のない単なる ko.observable() である場合、その値は「orderDropdown」配列の最初の項目として設定されます。これにより、変更イベントが発生します。

于 2012-08-06T20:37:25.490 に答える