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>它会起作用,除了一个小问题:

options绑定在 2.2 及以下版本中没有init绑定。它将init在 2.3 及更高版本中具有功能。如果你不需要在你的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 回答