Javascript 剔除自动增长绑定删除更改事件绑定
我有一个jquery自动增长插件的自定义绑定,可以在这里看到 参考代码:Javascript 剔除自动增长绑定删除更改事件绑定,javascript,knockout.js,custom-binding,autogrow,Javascript,Knockout.js,Custom Binding,Autogrow,我有一个jquery自动增长插件的自定义绑定,可以在这里看到 参考代码: ko.bindingHandlers.autogrow = { init: function (element, valueAccessor, allBindingsAccessor) { ko.applyBindingsToNode(element, { value: valueAccessor() }); ko.utils.do
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绑定仍在工作,但更改上的事件绑定已停止工作
有什么想法吗?jsfiddle.net/sujesharukil/3p9bj/17 这似乎很有效。我所做的只是从变更事件中删除($data)。正如我在第一篇评论中指出的,原因是当你设置
data-bind="event: {'someevent': func()}
实际上,someevent的偶数处理程序被设置为func()调用的返回。由于函数ViewModel.vmAreaProcess.SetAreaRevision没有返回处理程序函数,因此在实际触发偶数时,它不会执行回调,因为func()会立即执行
当你这样设置的时候
data-bind="event: {'someevent': func}
实际上,您正在将“someevent”绑定到func处理程序。触发事件时将执行func。希望这能解决问题?jsfiddle.net/sujesharukil/3p9bj/17 这似乎很有效。我所做的只是从变更事件中删除($data)。正如我在第一篇评论中指出的,原因是当你设置
data-bind="event: {'someevent': func()}
实际上,someevent的偶数处理程序被设置为func()调用的返回。由于函数ViewModel.vmAreaProcess.SetAreaRevision没有返回处理程序函数,因此在实际触发偶数时,它不会执行回调,因为func()会立即执行
当你这样设置的时候
data-bind="event: {'someevent': func}
实际上,您正在将“someevent”绑定到func处理程序。触发事件时将执行func。希望可以清除它?如果没有自动签名,它是否正常工作?另外,将事件的绑定从change:ViewModel.vmAreaProcess.SetAreaRevision($data)更改为change:ViewModel.vmAreaProcess.SetAreaRevision您不需要传入$data,这将立即执行function@SujeshArukil你好是的,当我删除自动增长部分时,它会按预期工作。您想从更改事件中获得什么?传递给函数的textarea中的值?不,我需要整个对象,这似乎工作正常。我所做的只是从更改事件中删除($数据)。如果没有自动签名,它是否正常工作?另外,将事件的绑定从change:ViewModel.vmAreaProcess.SetAreaRevision($data)更改为change:ViewModel.vmAreaProcess.SetAreaRevision您不需要传入$data,这将立即执行function@SujeshArukil你好是的,当我删除自动增长部分时,它会按预期工作。您想从更改事件中获得什么?传递给函数的textarea中的值?不,我需要整个对象,这似乎工作正常。我所做的只是从变更事件中删除($data)。