我正在尝试为Knockout中的模板实现类似于WPF概念的RelativeSource绑定,特别是将其模式设置为TemplatedParent的RelativeSource。
我已经通过覆盖默认的KO模板绑定来实现这一点,以便根据下面的代码片段将$ templatedParent添加到绑定上下文。
var originalInit = ko.bindingHandlers.template.init,
originalUpdate = ko.bindingHandlers.template.update;
ko.bindingHandlers.template = {
init: originalInit,
update: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
bindingContext['$templateElement'] = element;
originalUpdate(element, valueAccessor, allBindings, viewModel, bindingContext);
}
};
这允许模板绑定创建的子元素可以在其data-bind
属性中使用,例如 -
data-bind="style: {backgroundColor: $templateElement.fillColor}"
此解决方案假定模板父元素实现了一个名为fillColor
的属性,该属性可以是数据绑定的(我可以通过将其设置为Web组件自定义元素,并将该属性公开为ko observable来实现)。 / p>
我想知道
谢谢, 伊恩