knockout: добавить еще одну привязку в пользовательский 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()
}
}
2 ответа
Решение
Ты можешь позвонить ko.applyBindingsToNode
изнутри init
вашего обработчика привязки, как:
ko.applyBindingsToNode({ click: someHandler, text: someText });
Если вы применяете что-то вроде потока управления, вам нужно передать контекст во втором аргументе.
Вы пробовали использовать jQuery в своем пользовательском компоновщике:
ko.bindingHandlers.foo = {
init: function(el,val,bindings,model,context) {
$(el).attr('data-bind', 'click: clickHandler');
}
}