Mik*_*erg 24 javascript knockout.js
我有一个淘汰绑定处理程序,它使用plupload进行拖放和ajax上传.
要使用plupload脚本,我创建了一个plupload实例,后者又将事件监听器绑定到DOM元素.
这很好.
但是,我有一个"文件夹"列表,当我单击一个文件夹时,我显示该文件夹中的文件列表.我通过使用foreach绑定selectedFolder().文档来重用相同的DOM元素.
我遇到的问题是,在我的绑定处理程序中,我在init函数中执行所有的plupload操作,因为我重用了DOM元素,所以它们会绑定多个事件处理程序.这会导致拖放事件发送到alla处理程序.这意味着如果我将文件放在渲染文件列表中,则drop事件也会触发所有先前渲染的文件列表.
我正在寻找的是绑定处理程序中的某种拆卸或清理功能,这样我可以在文件列表被取消渲染时取消注册所有事件(这是一个单词?).
也许我们无法发现不退却?那我怎么处理呢?我不希望有一个全局实例,因为这会阻止我同时在多个地方使用绑定.
很抱歉没有给你任何代码.我在手机上.
干杯!
RP *_*yer 32
您可以注册将在KO删除元素时执行的处理程序(例如重新呈现模板时).看起来像:
//handle disposal (if KO removes by the template binding)
ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
$(element).datepicker("destroy");
});
Run Code Online (Sandbox Code Playgroud)
因此,在"init"函数中,您将为要绑定的元素注册一个dispose回调,并且您将有机会运行您想要的任何清理代码.