12

ビューモデルのオブザーバブルにバインドされたチェックボックスがあります。基本的に「よろしいですか?」というポップアップを表示する必要があります。ユーザーが true から false に変更すると、確認プロンプトが表示されます。変更を「キャンセル可能」にするのに最適な場所を見つけるのに恐ろしい時間を費やしています。. .

1) クリックイベントの jQuery ハンドラー 2) Viewmodel internal subscribe "beforeChange" 3) Viewmodel internal subscribe (通常)

いずれにせよ、変更に対応するよりも、変更を完全にキャンセルして、必要に応じて以前の値に戻す可能性がある方がはるかに望ましいと思います。

Knockout のサブスクライブ イベントでは、変更をキャンセルできますか? 任意の洞察をいただければ幸いです。ありがとう!

4

2 に答える 2

22

jQuery の stopImmediatePropagation を使用した簡単なオプションを次に示します。

http://jsfiddle.net/rniemeyer/cBvXM/

<input type="checkbox" data-bind="click: confirmCheck, checked: myvalue" />

js:

var viewModel = {
    myvalue: ko.observable(false),
    confirmCheck: function(data, event) {
        if (!confirm("Are you sure?")) {
            event.stopImmediatePropagation();            
            return false;
        }
        return true;
    }
};
于 2012-05-14T16:28:05.493 に答える