2013-03-07 71 views
2

我想创建一个自定义绑定作为添加其他绑定的简写 - 就像一个宏。淘汰赛:在自定义绑定中添加另一个绑定init

<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() 
    } 
} 

回答

8

您可以致电来自内部的ko.applyBindingsToNode您绑定的处理程序一样的init

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

如果你申请有点像控制流,那么你想要通过上下文中的第二个参数。

+1

我不得不添加元素作为第一次agument但比它的工作。谢谢!我想知道这是否记录在某处。我很*缺少这种方法。 :-) – Sixtease 2013-03-07 14:34:55

0

您是否尝试过在你的定制绑定使用jQuery:

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