Knockout模板绑定的“RelativeSource”绑定(类似于WPF)

时间:2014-06-03 10:36:04

标签: knockout.js

我正在尝试为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>

我想知道

  1. 如果其他人做过与此类似的事情并且
  2. 从设计的角度来看这是一个坏主意
  3. 谢谢, 伊恩

0 个答案:

没有答案