2013-03-07 69 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'); 
    } 
}