私がやろうとしているのは、jQuery のデタッチ メソッドを使用していくつかのノードをデタッチし、ビューモデルを更新し、ノードをアタッチして、値を更新することです。
これは可能ですか?
これが私が撮影しているものの完全なフィドルです。基本的に、左から右に移動し、デタッチ、更新、アタッチをクリックして、テキストボックスに新しい値を入力できるようにしたいと考えています。
アップデート
RPの回答に基づいて、これがユースケースに適合すると仮定すると、それらをdom hiddenにアタッチし、ビューモデルを更新してから、ノードを表示するのが最善の策です。このようなものは私にとってはうまくいきます:
$("#updateAndAttach").click(function () {
var junk = $("<div />").css("display", "none");
junk.append(nodes);
$("#home").append(junk);
vm.a("AAA");
vm.b("BBB");
$(nodes).unwrap();
});
更新を終了
完全なコードは次のとおりです。
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>