knockout.js - 带有 "options"绑定(bind)的 Knockout 自定义绑定(bind)包装器

标签 knockout.js ko-custom-binding

我正在尝试为“选项”绑定(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+)。

示例:http://jsfiddle.net/rniemeyer/AerJ5/

关于knockout.js - 带有 "options"绑定(bind)的 Knockout 自定义绑定(bind)包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16401444/

相关文章:

javascript - Durandal - 跨 View 模型共享可观察值

knockout.js - 在 knockoutjs 中声明 View 模型

knockout.js - 自定义绑定(bind),带有绑定(bind)和 init - knockout.js

javascript - Knockoutjs 单选按钮组自定义绑定(bind)未根据选择更新

javascript - Knockout.js ko.mapping.toJS 在我看来没有刷新数据

knockout.js - css 类绑定(bind)安全吗?

javascript - 从 Knockout 发布到 ASP.NET MVC Controller

knockout.js - 自定义绑定(bind) valueAccessor 有意外结果

knockout.js - 为knockoutjs自定义绑定(bind)配置事件