[英]Custom binding for $.expandingTextarea with knockout.js
I am writing a custom binding to use $.expandingTextarea with Knockout.js . 我正在编写一个自定义绑定,以将$ .expandingTextarea与Knockout.js一起使用。
Following the excellent article Another Look at Custom Bindings for KnockoutJS , I hoped it would be as simple as: 在写了一篇很棒的文章《 KnockoutJS的自定义绑定的另一种眼光》之后 ,我希望它会很简单:
ko.bindingHandlers.expandingTextarea = {
init: function(element, valueAccessor) {
$(element).expandingTextarea();
},
update: function(element, valueAccessor, aBA, vm) {
ko.bindingHandlers.value.update(element, valueAccessor, aBA, vm);
$(element).expandingTextarea("resize");
}
}
Unfortunately this does not work as expected - ie when changes are made to the textarea, the corresponding view model is not updated. 不幸的是,这无法按预期方式工作-即,在更改文本区域时,不会更新相应的视图模型。 Here's a jsFiddle that illustrates the problem. 这是一个说明问题的jsFiddle 。
How does one create a KO custom binding for the expandingTextarea plugin? 如何为ExpandingTextarea插件创建KO自定义绑定?
Here is the solution on jsFiddle , namely also adding the value binding's init
(which has the code to capture the events specified by the valueUpdate
parameter): 这是jsFiddle的解决方案 ,即还添加了值绑定的init
(该代码具有捕获由valueUpdate
参数指定的事件的代码):
ko.bindingHandlers.expandingTextarea = {
init: function(element, valueAccessor, aBA, vm) {
$(element).expandingTextarea();
ko.bindingHandlers.value.init(element, valueAccessor, aBA, vm);
},
update: function(element, valueAccessor, aBA, vm) {
ko.bindingHandlers.value.update(element, valueAccessor, aBA, vm);
$(element).expandingTextarea("resize");
}
};
I hope this helps someone else! 我希望这可以帮助其他人! :) :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.