简体   繁体   English

与$ next.js的$ .expandingTextarea的自定义绑定

[英]Custom binding for $.expandingTextarea with knockout.js

I am writing a custom binding to use $.expandingTextarea with Knockout.js . 我正在编写一个自定义绑定,以将$ .expandingTextareaKnockout.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM