如何从淘汰赛中的节点中删除绑定?

时间:2013-08-13 00:41:44

标签: javascript jquery events knockout.js

我发现理论上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 中看到,该节点仍然附加了绑定(事件侦听器)。

1 个答案:

答案 0 :(得分:8)

Knockout正在从节点中删除与淘汰相关的绑定,但是当它这样做时,它不会将节点重置为空值。它只是停止从viewmodel,vm自动更新节点。

http://jsfiddle.net/BrsmC/2/

取出更新小提琴的第21行。

ko.cleanNode($("#testing")[0]);

你应该看到当你运行它时,名字现在是'imnotbinding'。