Javascript “委托”;模板";装订不';行不通 小提琴:
因此,我想为模板绑定创建一个快捷方式,如下所示:Javascript “委托”;模板";装订不';行不通 小提琴:,javascript,user-interface,data-binding,web,knockout.js,Javascript,User Interface,Data Binding,Web,Knockout.js,因此,我想为模板绑定创建一个快捷方式,如下所示: ko.bindingHandlers.shortcut = { init: function(element, valueAccessor, allBindings, viewModel, bindingContext) { var data = valueAccessor(); var nextValueAccessor = function () {
ko.bindingHandlers.shortcut = {
init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
var data = valueAccessor();
var nextValueAccessor = function () {
return { name: 'someTemplate', data: data };
};
ko.bindingHandlers.template.init.call(this, element, nextValueAccessor, allBindings, viewModel, bindingContext);
}
}
HTML:
定义了“someTemplate”模板。什么都不说是不行的。我在这里做错了什么?您的问题本质上是您没有调用模板绑定的
update
函数。不过,您可能会发现使用稍微不同的方法包装绑定更容易,因此您只需使用init
函数:
ko.bindingHandlers.shortcut = {
init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
ko.applyBindingAccessorsToNode(element, {
template: function() {
return {
name: 'someTemplate',
data: valueAccessor()
};
}
}, bindingContext)
return { controlsDescendantBindings: true };
}
};
样本:
如果您仍在使用KO 2.x,那么您可能希望使用KO.applybindingstoode
来代替:
ko.applyBindingsToNode(element, {
template: {
name: 'someTemplate',
data: valueAccessor()
}
}, bindingContext);
示例:您的问题本质上是您没有调用模板绑定的
update
函数。不过,您可能会发现使用稍微不同的方法包装绑定更容易,因此您只需使用init
函数:
ko.bindingHandlers.shortcut = {
init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
ko.applyBindingAccessorsToNode(element, {
template: function() {
return {
name: 'someTemplate',
data: valueAccessor()
};
}
}, bindingContext)
return { controlsDescendantBindings: true };
}
};
样本:
如果您仍在使用KO 2.x,那么您可能希望使用KO.applybindingstoode
来代替:
ko.applyBindingsToNode(element, {
template: {
name: 'someTemplate',
data: valueAccessor()
}
}, bindingContext);
样本: