我发现理论上ko.cleanNode()
应该在调用时从节点中删除绑定,但在 this example 中它似乎不起作用。
使用Javascript:
// View model
var vm = {
name: ko.observable("John")
}
// Node to be added
var node = $("<div/>",{
id: "testing",
'data-bind' : "text: name()"
});
// First addition to body
$("body").append(node);
// Apply bindings
ko.applyBindings(vm,$("#testing")[0]);
// Remove
ko.cleanNode($("#testing")[0]);
$("#testing").remove();
$("body").append(node);
结果:您可以在 jsFiddle 中看到,该节点仍然附加了绑定(事件侦听器)。
答案 0 :(得分:8)
Knockout正在从节点中删除与淘汰相关的绑定,但是当它这样做时,它不会将节点重置为空值。它只是停止从viewmodel,vm自动更新节点。
取出更新小提琴的第21行。
ko.cleanNode($("#testing")[0]);
你应该看到当你运行它时,名字现在是'imnotbinding'。