我正在尝试为“选项”绑定(bind)制作一个简单的 KO 自定义绑定(bind)包装器,类似于 this example 中描述的内容。 。我的目标是拥有一个自定义绑定(bind),将 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);
}
};
对此的任何帮助将不胜感激。
最佳答案
看起来您的问题仅与 jsFiddle 加载脚本的方式有关。您已将其设置为 onLoad
,这导致您的 applyBindings 在创建自定义绑定(bind)之前被调用。
如果您将 fiddle 更改为使用类似 No wrap in <body>
的内容它会起作用,除了一个小问题:
options
绑定(bind)没有 init
2.2及以下版本绑定(bind)。它将有一个 init
2.3 及更高版本中的功能。如果您不需要在init
中做任何进一步的事情函数(严格包装它),那么你可以这样做:
init: ko.bindingHandlers.options.init,
update: function (element, valueAccessor, allBindingsAccessor) {
ko.bindingHandlers.options.update(element, valueAccessor, allBindingsAccessor);
}
它要么是未定义的,要么使用现有的内容(对于 2.3+)。
关于knockout.js - 带有 "options"绑定(bind)的 Knockout 自定义绑定(bind)包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16401444/