javascript - knockout 自动增长绑定(bind)删除更改事件绑定(bind)

标签 javascript knockout.js custom-binding autogrow

我有一个 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/

相关文章:

javascript - jquery onchange 事件不适用于在 php 中上传文件

javascript - 使用 jquery 从列表中删除元素

javascript - 如何正确使用Knockout Visible绑定(bind)?

javascript - knockout : a custom binding for observableArray which renders only when complete

knockout.js - 字符串空到空自定义绑定(bind)

javascript - JS文件问题(即使我物理删除它们(js文件),它的方法仍然有效)

javascript - 交易 View 图表集成的数据格式

mvvm - Knockout.js:一个页面或页面的一部分上的多个 ViewModel 绑定(bind)

javascript - knockout 3.1 : Select2 not working properly with valueAllowUnset

javascript - 不确定复选框的 Knockout 自定义绑定(bind)将不起作用