跨模板标签的数据绑定

时间:2017-12-19 10:50:00

标签: polymer

我想知道,是否有可能拥有数据绑定&#34;&#34;一个模板?假设我有一个<template/> - 标签放在不同组件的插槽中 - 该组件将其标记到其上下文中。然后我想将根元素中的数据绑定到<template/> - 标记。此外,事件绑定(on-x-changed)不起作用,因为您无法分配在托管组件中定义的功能。有任何想法吗?

示例:

... host
{{boundData}}
<binding-component>
    <template>
        {{boundData}}
    </template>
</binding-component>

当我在托管组件中观察boundData时,我看不到变化。有办法解决这个问题吗?或者是我唯一的机会解雇自定义事件?

2 个答案:

答案 0 :(得分:1)

如果您正在寻找绑定聚合物之外的属性,例如index.html,您可以将值与元素绑定。一个例子 ; index.html

 <dom-bind>
    <template>
      <binding-component bound-data="{{boundData}}"></binding-component>
    </template>
 </dom-bind>

  <script>
     // set a value a string, Number or Object etc.
     // Optionally wrap this code into a listener ie;
     // window.addEventListener('load', e=> { ...below code ... })
    var boundData= document.querySelector('dom-bind');
    boundData = {} // 

  </script>

现在,您的binding-component元素中的属性为boundData 希望它能帮助或提供更多代码以便更好地理解。

答案 1 :(得分:1)

我已经按照dom-if的方式开展了工作。与在dom-ifreference)中一样,我正在创建一个Templatize - 实例,然后使用forwardHostProp来处理“内部”属性

    this.__ctor = Templatize.templatize(template, this, {
        mutableData: true,
        forwardHostProp(prop, value) {
            // handling item updates, item being the only property 
            // from within the binding component
            // everything else is automatically bound by templatize
            this.set(prop, value);
            this.update(this.item);
        },
    });

    this.__instance = new this.__ctor();
    this.root.appendChild(this.__instance.root);

这一切都发生在connectedCallback

因为Templatize - 实例已传递this,所以它也绑定到当前上下文。

祝你好运!