重复模板内两个聚合物成分的绑定参数

Bind parameters of two polymer components inside repeat template

我想在下面的例子中绑定 attrattr1。这两个参数不依赖于 data(其他属性依赖)。当以这种方式使用绑定时,所有 'rows' 之间只有一个共享数据对象。我只想将一次迭代的两个组件绑定在一起。

<template repeat"{{data in dataList}}">
    <component1 attr="{{binding}}" />
    <component2 attr2="{{binding}}" />
</template>

我的第一个想法是将属性绑定到 data 对象的变量:

<template repeat"{{data in dataList}}">
    <component1 attr="{{data.binding}}" />
    <component2 attr2="{{data.binding}}" />
</template>

另一方面,这个解决方案真的很丑陋,因为模型对象获取的是仅供查看的数据。因为模型的寿命通常比组件长,所以这可能会导致巨大的开销。另一个问题是序列化,它可能会因为附加数据而失败。

有什么优雅的解决方案吗?到目前为止我唯一想到的是在迭代数据集之前包装数据对象。另一方面,这种方法可能会导致模型更新出现问题...

天真的想法:一个只在模板内部使用的变量的范围不应该限制在这个模板内吗?在重复模板的特殊情况下再进行一次迭代?

您可能会键入建议您的 binding 变量为 Object 并像这样使用它:

<polymer-element name="my-element" attributes="dataList">
  <template>
    <ul>
      <template repeat="{{d in dataList}}">
        <li>
          {{d}} ⇒ {{binding[d]}} <!-- Since type-suggested, it works -->
        </li>
      </template>
    </ul>
  </template>

  <script>
    Polymer({
      dataList: ['navy', 'maroon'],
      binding: {} /* it’s necessary to type-suggest var for Polymer */
    });
  </script>
</polymer-element>

请注意,上面的代码片段需要 dataList 中的不同项目。实时预览:http://plnkr.co/edit/ez36BVUPCKW8xRSkGxOM?p=preview

Naive thought: Shouldn't be the scope of a variable that is only used inside of a template restricted to this template? In the special case of the repeat template furthermore to one iteration?

这对我来说听起来不可能,因为(除此之外这会使实现过于复杂)有时人们想在 nested 模板中绑定变量:

<template repeat="{{a in lst}}">
  {{bound_here}}
  <template id="nested">
    {{bound_here}}
  ...

根据您的建议,上述绑定变得不可能。