Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 剔除自动增长绑定删除更改事件绑定_Javascript_Knockout.js_Custom Binding_Autogrow - Fatal编程技术网

Javascript 剔除自动增长绑定删除更改事件绑定

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

我有一个jquery自动增长插件的自定义绑定,可以在这里看到

参考代码:

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)。