我正在尝试为“options”绑定创建一个简单的KO自定义绑定包装器,类似于this example中描述的内容。我的目标是使用自定义绑定将select2.js
应用于指定的选择框。
我试图通过将options binding包装在自定义包装器中来开始,但由于某种原因它无法正常工作。
这是我的(jsFiddle):
ko.bindingHandlers.select2 = {
init: function (element) {
ko.bindingHandlers.options.init(element);
},
update: function (element, valueAccessor, allBindingsAccessor) {
ko.bindingHandlers.options.update(element, valueAccessor, allBindingsAccessor);
}
};
对此的任何帮助将不胜感激。
答案 0 :(得分:2)
看起来您的问题与jsFiddle加载脚本的方式有关。您已将其设置为onLoad
,这导致在创建自定义绑定之前调用applyBindings。
如果你改变小提琴使用No wrap in <body>
之类的东西,除了一个小问题外,它会起作用:
options
绑定在版本2.2及更低版本中没有init
绑定。它将在2.3及更高版本中具有init
功能。如果您不需要在init
函数中进行任何进一步的操作(严格包装它),那么您可以这样做:
init: ko.bindingHandlers.options.init,
update: function (element, valueAccessor, allBindingsAccessor) {
ko.bindingHandlers.options.update(element, valueAccessor, allBindingsAccessor);
}
它将是未定义的或使用那里(对于2.3 +)。