4

チェックボックスをオンにする必要があるかどうかを検証しようとしています。サブスクライブを使用していますが、なぜ機能しないのかわかりません。テキストフィールドで同様のロジックを試してみましたが、機能します。私は小さなデモを作成しました:

<input type ="checkbox" data-bind="checked: IsSelected"/>
<input type ="text" data-bind="value: Name"/>

var model = {
    IsSelected : ko.observable(false), 
    Name: ko.observable("")
}
var demo = 1;
model.IsSelected.subscribe(function(value){
    if (demo == 2 && value){
        model.IsSelected(false);
    }
    demo = 2; 
});
model.Name.subscribe(function(value){
    if (value == "Set"){
        model.Name("Jose");
    }
})
  ko.applyBindings(model);

http://jsfiddle.net/Xepe/9YXTW/

何か間違ったことをしているのかどうかわかりません。

前もって感謝します。

4

2 に答える 2

3

ブラウザがチェックボックスを更新する前にイベントが発生すると思うので、チェックされているように見えIsSelectedますfalse。回避策の 1 つは、チェックボックスを false に戻す_.delayか、遅らせることです。setTimeout

model.IsSelected.subscribe(function(value){
    if (demo == 2 && value){
        setTimeout(function () { model.IsSelected(false); }, 0);
    }
    demo = 2; 
});

http://jsfiddle.net/9YXTW/17/

于 2013-11-14T19:21:01.140 に答える