2

この例で説明されているものと同様の「オプション」バインディング用の単純な KO カスタム バインディング ラッパーを作成しようとしています。select2.js私の目標は、指定された選択ボックスに適用されるカスタム バインディングを作成することです。

オプションバインディングをカスタムラッパーでラップするだけで始めようとしていますが、何らかの理由で機能していません。

これが私が持っているものです( jsFiddle ):

ko.bindingHandlers.select2 = {
  init: function (element) {
      ko.bindingHandlers.options.init(element);
  },
  update: function (element, valueAccessor, allBindingsAccessor) {
      ko.bindingHandlers.options.update(element, valueAccessor, allBindingsAccessor);
  }
};

これに関するヘルプは大歓迎です。

4

1 に答える 1

2

あなたの問題は、jsFiddle がスクリプトをロードする方法に関連しているようです。に設定していたためonLoad、カスタム バインディングを作成する前に applyBindings が呼び出されていました。

フィドルを次のようなものを使用するように変更するNo wrap in <body>と、1 つの小さな問題を除いて機能します。

バインディングには、バージョン 2.2 以下のoptionsバインディングはありません。2.3以降で機能しますinitinit関数でこれ以上何もする必要がない場合init(厳密にラップする場合)、次のことができます。

init: ko.bindingHandlers.options.init,
update: function (element, valueAccessor, allBindingsAccessor) {
   ko.bindingHandlers.options.update(element, valueAccessor, allBindingsAccessor);
}

定義されていないか、そこにあるものを使用します(2.3+の場合)。

サンプル: http://jsfiddle.net/rniemeyer/AerJ5/

于 2013-05-06T15:09:18.450 に答える