私が探しているのは、jQueryのデタッチメソッドを使用していくつかのノードをデタッチし、ViewModelを更新し、ノードを戻して値を更新することです。デタッチされたノードでKnockoutJSを使用する
これは可能ですか?
ここに私が撮影しているもののfull fiddleがあります。基本的には、左から右に移動し、切り離し、更新、および添付をクリックし、テキストボックスに新しい値を持たせたいと考えています。
RPの答えに基づいてUPDATE
を、最善の策は、これはあなたのユースケースに収まると仮定すると、隠されたDOM にそれらを添付し、あなたのviewmodelを更新し、あなたのノードを表示するのです。このような何かが私の作品:
$("#updateAndAttach").click(function() {
var junk = $("<div />").css("display", "none");
junk.append(nodes);
$("#home").append(junk);
vm.a("AAA");
vm.b("BBB");
$(nodes).unwrap();
});
ENDのUPDATE
ここでのフルコード:
はJavaScript
$(function() {
function ViewModel() {
this.a = ko.observable("a");
this.b = ko.observable("b");
}
var vm = new ViewModel();
ko.applyBindings(vm, document.getElementById("home"));
var nodes = null;
$("#detach").click(function() {
nodes = $("#home").children().detach();
});
$("#attach").click(function() {
$("#home").append(nodes);
});
$("#update").click(function() {
vm.a("AAA");
vm.b("BBB");
});
})();
HTML:
<div id="home">
<input type="text" data-bind="value: a" />
<input type="text" data-bind="value: b" />
</div>
<button id="detach">Detach</button>
<button id="update">Update</button>
<button id="attach">Attach</button>
感謝を持っています。私の場合、回避策は簡単です。再接続する前に更新する必要があります。上の編集では、それを非常に単純できれいにしています。 –