我有一个jquery自动增长插件的自定义绑定,可以在这里看到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绑定仍在工作,但更改时的事件绑定已停止工作。
有什么想法吗?
答案 0 :(得分:1)
jsfiddle.net/sujesharukil/3p9bj/17 这似乎工作得很好。我所做的就是从change事件中删除($ data)。我在第一篇评论中指出的原因是你设置了类似
的东西data-bind="event: {'someevent': func()}
本质上正在发生的事情是,someevent的even处理程序被设置为func()调用的返回。由于您的函数ViewModel.vmAreaProcess.SetAreaRevision没有返回处理函数,因此当实际触发even时它不会进行回调,因为func()是立即执行的。
当你像这样设置时
data-bind="event: {'someevent': func}
你实际上是将'someevent'绑定到func处理程序。触发事件时将执行func。希望能清除它吗?