我有一个自定义绑定处理程序,我正在绑定到视图模型中的复杂对象。
update
函数在可观察对象的任何属性更新时调用。然而
更新
每一个
我理解为什么会发生这种情况,因为每个属性都会导致调用更新,我想我知道如何防止这种情况-使用
deferred updates
但是,我找不到如何在我的自定义绑定中仅为可观察对象启用延迟更新。我不想在应用程序范围内启用它,因为我正在将绑定编写为库函数。
我尝试了很多不同的方法,包括:
所有这些都不起作用。
我还没有发现任何其他自定义绑定处理程序可以远程接近这类函数,并且一直在尝试将它与其他函数组合在一起。
我的绑定代码本身相对简单,我使用绑定对象并简单地拆分参数并将其传递给代码镜像实例。
ko.bindingHandlers.editor = {
init: function(element, valueAccessor, allBindingsAccessor) {
var observableValue = ko.utils.unwrap(valueAccessor());
initEditor(element, observableValue, allBindingsAccessor);
},
update: function(element, valueAccessor, allBindingsAccessor) {
var observableValue = ko.unwrap(valueAccessor());
createEditor(codeEditorDiv, observableValue);
resize();
updateEditor(element, observableValue, allBindingsAccessor);
}
};
我的HTML代码是:
<div id="editor" data-bind="editor: EditorVM"></div>
我正在使用
Dotnetify