更改应用Knockout绑定的顺序

Jac*_*cob 5 knockout.js

我正在创建一个Knockout绑定,它将作为jQuery小部件的包装器.此小部件将事件处理程序应用于子元素.不幸的是,窗口小部件的事件处理直接应用于子元素,而不是委托.问题是,我有一个foreach在相同的元素结合,但我需要自定义的结合应用后,foreach应用结合.

显然,正确的做法是修复jQuery插件,但目前这不是一个选项.我想知道我是否有任何好的解决方案选项.例如,有没有办法做以下任何一种情况?

  1. 检测是否已应用特定绑定
  2. 影响绑定应用程序的排序
  3. 安全地强制进行另一次绑定

更新:

我应该提到的一个方面是这个自定义和foreach绑定驻留在模板中.因此,直接修改DOM的解决方案对我来说不起作用,因为它实际上会修改模板.

DrS*_*myD 7

在bindingHandler上添加一个依赖项数组的after属性

ko.bindingHandlers.myHandler = {
    init: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
        // Actual code
    },
    update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
        // Actual code
    },
    after:['foreach']
};
Run Code Online (Sandbox Code Playgroud)


And*_*ers 3

如果您的绑定依赖于 foreach 绑定,为什么不从自定义绑定中调用它呢?那么您甚至不需要在数据绑定属性中提供它。前几天我帮助了另一个 SO 用户,检查我如何从自定义绑定中调用选项绑定

http://jsfiddle.net/w9bsc/42/

ko.applyBindingsToNode(element, { options: valueAccessor(), optionsCaption: caption, optionsText: optionsText  }, viewModel);
Run Code Online (Sandbox Code Playgroud)