0

$.expandingTextareaKnockout.jsで使用するカスタム バインディングを作成しています。

優れた記事「Another Look at Custom Bindings for 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");
  }
}

残念ながら、これは期待どおりには機能しません。つまり、テキストエリアに変更が加えられた場合、対応するビュー モデルは更新されません。問題を示すjsFiddle を次に示します。

expandTextarea プラグインの KO カスタム バインディングを作成するにはどうすればよいですか?

4

1 に答える 1

1

これは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");
    }
};

これが他の誰かに役立つことを願っています!:)

于 2012-06-29T00:13:53.730 に答える