0

この質問はこれと似ていると思います、ルールでわかる限り、答えがなく、同じシナリオでない場合は、質問してもかまいません。

実際のシナリオを次のように単純化しました。基本的に、チェックボックスは、knockout.js のビュー モデルを検出できないアクセスできないコードによってチェックされます。回避策はありますか?

HTML:

<input id="myCheckbox" type="checkbox" data-bind="checked: myValue" />

<div data-bind="text: myValue"></div>

JavaScript:

var viewModel = {
    myValue: ko.observable(false)
};

ko.applyBindings(viewModel);

setTimeout(function() { 
    $("#myCheckbox").attr("checked", "checked");
}, 1000);
4

3 に答える 3

0

リンクした回答では、「クリック」などの通常のイベントを通じてノックアウトに変更を通知する必要があると説明されています。Rustam がそこに投稿したアイデアは次のとおりです。

function update(){
  var $cb = $(':checkbox');
  var cb = $cb[0];
  // change value directly on element
  cb.checked = !cb.checked;
  // propagate changes to KO
  $cb.triggerHandler('click');
}
setTimeout(update, 1000);

もちろん、KO によりネイティブな方法は、次のようにモデルのオブザーバブルを変更することです。

var update = function() {
    viewModel.myValue(!viewModel.myValue)
};
于 2013-07-16T18:28:00.637 に答える