ノックアウト 2.3.0 ではoptionsAfterRender
バインディングが導入され、オプションを非常に柔軟に変更できるようになりました。
オプションのキャプションを無効にしたいと思います。現時点では、私はやっています
<select data-bind="options: items, optionsCaption:'please select', optionsAfterRender: function(option, item) { ko.applyBindingsToNode(option, {disable: !item}, item); }"></select>
optionsAfterRender
これは機能しますが、関数をどこにでもコピーして貼り付ける必要があります。カスタム bindingHandler を作成して 1 か所で実行しようとしましたが、問題が発生しています。これはこれまでの私の bindingHandler です:
ko.bindingHandlers.disableOptionsCaption = {
init: function (element) {
ko.applyBindingsToNode(element, {
optionsAfterRender: function (option, item) {
ko.applyBindingsToNode(option, {
disable: !item
}, item);
}
});
}
};
ここでは、動作中のバージョンと動作していないバージョンを示すフィドルも作成しました。どんな助けでも大歓迎です!