Jquery 敲除js中的addDisposeCallback()如何工作
首先看一个小的自定义绑定代码Jquery 敲除js中的addDisposeCallback()如何工作,jquery,knockout.js,Jquery,Knockout.js,首先看一个小的自定义绑定代码 ko.bindingHandlers.dialog = { init: function(element, valueAccessor, allBindingsAccessor) { var options = ko.utils.unwrapObservable(valueAccessor()) || {}; var dialog; alert($(element).attr('id')); /
ko.bindingHandlers.dialog = {
init: function(element, valueAccessor, allBindingsAccessor) {
var options = ko.utils.unwrapObservable(valueAccessor()) || {};
var dialog;
alert($(element).attr('id'));
//do in a setTimeout, so the applyBindings doesn't bind twice from element being copied and moved to bottom
setTimeout(function() {
var dlgOptions = {
autoOpen: true,
close: function(event, ui){
$(this).remove();
}
};
$.extend(dlgOptions, options);
dialog = $(element).clone().dialog(dlgOptions);
}, 0);
ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
$(element).dialog("destroy");
dialog.remove();
});
}
};
代码取自此url
下面这一行是关于什么的
ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
$(element).dialog("destroy");
dialog.remove();
});
什么是domandedisposal和addDisposeCallback
何时调用addDisposeCallback()
addDisposeCallback()和复选框取消选中事件之间的关系是什么?
如果有任何关系,那么告诉我它是如何建立的
此行正在执行的操作$.extend(dlgOptions,options)代码>
此行正在执行的操作dialog=$(元素).clone().dialog(dlgOptions)代码>domNodeDisposal
和addDisposeCallback
都在淘汰文档中解释:knockoutjs.com/documentation/custom-bindings-dispose.html
它们允许您连接到敲除处理程序,以添加自己的清理代码。在您的示例中,是销毁jQueryUI对话框
用于显示对话框的模板使用绑定到复选框的可观察元素的ko if
虚拟元素包装。当可观测值为true时,将呈现模板。如果为false,则会将其删除。通过调用addDisposeCallback
,您将添加自己的额外清理代码,以便在knockout删除元素(dialog)时执行,这将在删除之前清理dialog元素(摆脱事件处理程序)?代码中的关系是如何建立的尚不清楚。任何人都可以帮助我理解。thankscan u plzz提供了一些示例代码,可以非常轻松地解释addDisposeCallback()的用法。您使用的示例代码是一个很好的示例,我链接到您的页面上的代码也是一个很好的示例。