Javascript jQuery事件在“之后不触发”;“清洁”;敲除绑定
在我的项目中,我有一个Javascript jQuery事件在“之后不触发”;“清洁”;敲除绑定,javascript,jquery,html,button,knockout.js,Javascript,Jquery,Html,Button,Knockout.js,在我的项目中,我有一个,其中我专门应用了Knockout.js绑定。我必须根据用户单击的内容在该区域实例化不同的ViewModel 为了防止在同一个元素错误上两次无法调用绑定,我首先必须“清理”绑定以使该区域再次可用。我调用初始的applyBindings()函数: ko.applyBindings(new ViewModel("Planet", "Earth"), document.getElementById("bindings-area")); 最后,我将清理,并调用新绑定: var e
,其中我专门应用了Knockout.js绑定。我必须根据用户单击的内容在该区域实例化不同的ViewModel
为了防止在同一个元素错误上两次无法调用绑定,我首先必须“清理”绑定以使该区域再次可用。我调用初始的applyBindings()
函数:
ko.applyBindings(new ViewModel("Planet", "Earth"), document.getElementById("bindings-area"));
最后,我将清理
,并调用新绑定:
var element = $("#bindings-area")[0];
ko.cleanNode(element);
ko.applyBindings(new ViewModel("NEW", "Bindings"), document.getElementById("bindings-area"));
问题:当我在#bindings区域
div中包含一个HTML按钮时,在清理绑定并实例化新模型后,它将不再工作。我确信这与ko.cleanNode()
函数也以某种方式删除了按钮绑定有关。我如何重新启动它们或首先阻止cleanNode()
对按钮进行操作
小提琴:中很好地描述了这个问题。此引文描述了问题所在以及需要执行的操作: 删除元素时,Knockout运行逻辑来清理任何数据 与元素关联。作为这一逻辑的一部分,击倒呼叫 如果页面中加载了jQuery,则使用jQuery的
cleanData
方法。在里面
在高级方案中,您可能希望阻止或自定义此数据的传输方式
已在应用程序中删除。敲除公开了一个函数,
ko.utils.domNodeDisposal.cleanExternalData(节点)
,可以
重写以支持自定义逻辑。例如,为了防止cleanData
从被调用开始,可以使用空函数替换
标准cleanExternalData
实施:
ko.utils.domNodeDisposal.cleanExternalData = function () {
// Do nothing. Now any jQuery data associated with elements will
// not be cleaned up when the elements are removed from the DOM.
};
这里是最新的