knockout:在自定义绑定init中添加另一个绑定

时间:2013-03-07 11:23:16

标签: knockout.js ko-custom-binding

我想创建一个自定义绑定作为添加其他绑定的简写 - 如宏。

<div data-bind="foo: 1"></div>

应该做与

相同的事情
<div data-bind="click: clickHandler, css: { someClass: someObservable }, ...">
</div>

类似的东西:

ko.bindingHandlers.foo = {
    init: function(el,val,bindings,model,context) {
        // some way to add { click: clickHandler } to bindings()
    }
}

2 个答案:

答案 0 :(得分:9)

您可以在绑定处理程序的ko.applyBindingsToNode内调用init,如:

ko.applyBindingsToNode({ click: someHandler, text: someText });

如果您正在应用类似控制流的内容,那么您可能希望在第二个参数中传递上下文。

答案 1 :(得分:0)

您是否尝试在自定义活页夹中使用jQuery:

ko.bindingHandlers.foo = {
    init: function(el,val,bindings,model,context) {
        $(el).attr('data-bind', 'click: clickHandler');
    }
}