我有一个 jquery autogrow 插件的自定义绑定(bind),可以在这里看到 Autosize knockout custom binding autosize on load
引用代码:
ko.bindingHandlers.autogrow = {
init: function (element, valueAccessor, allBindingsAccessor) {
ko.applyBindingsToNode(element, { value: valueAccessor() });
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
//$(element).data('autosize').remove();
});
$(element).autosize({ append: "\n" });
$(element).focus(function () {
$(element).trigger('autosize');
});
}
};
我的使用方式如下:
<textarea id="autogrow" class="text-nm span2" data-bind="autogrow: AreaProcessName, attr: { id: 'AreaProcessName' + Id }, event: { change: ViewModel.vmAreaProcess.SetAreaRevision($data) }"></textarea>
attr 绑定(bind)仍然有效,但更改时的事件绑定(bind)已停止工作。
有什么想法吗?
最佳答案
jsfiddle.net/sujesharukil/3p9bj/17 这似乎工作正常。我所做的只是从更改事件中删除 ($data) 。正如我在第一条评论中指出的原因是当您设置类似
data-bind="event: {'someevent': func()}
本质上发生的是,某些事件的偶数处理程序被设置为 func() 调用的返回。由于您的函数 ViewModel.vmAreaProcess.SetAreaRevision 不返回处理函数,因此当事件实际触发时它不会执行回调,因为 func() 会立即执行。
当你这样设置时
data-bind="event: {'someevent': func}
您实际上将“someevent”绑定(bind)到 func 处理程序。 func 将在事件触发时执行。希望这能清除它吗?
关于javascript - knockout 自动增长绑定(bind)删除更改事件绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16082537/