1

我有一个 jquery autogrow 插件的自定义绑定,可以在这里看到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 绑定仍在工作,但更改事件绑定已停止工作。

有任何想法吗?

4

1 回答 1

1

jsfiddle.net/sujesharukil/3p9bj/17 这似乎工作正常。我所做的只是从更改事件中删除 ($data)。正如我在第一条评论中指出的那样,原因是当您设置类似

data-bind="event: {'someevent': func()}

本质上发生的是,someevent 的偶数处理程序被设置为 func() 调用的返回。由于您的函数 ViewModel.vmAreaProcess.SetAreaRevision 没有返回处理程序函数,因此在实际触发事件时它不会执行回调,因为 func() 会立即执行。

当你这样设置时

data-bind="event: {'someevent': func}

您实际上是在将“someevent”绑定到 func 处理程序。该函数将在事件触发时执行。希望清除它?

于 2013-04-18T13:52:07.703 回答