我想在以下示例中绑定attr
和attr1
。这两个参数不依赖于data
(其他属性)。以这种方式使用绑定时,所有“行”之间只有一个共享数据对象。我只希望将一次迭代的两个组件绑定在一起。
<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>
另一方面,这个解决方案非常难看,因为模型对象只能附加查看数据。由于模型的寿命通常比组件长,因此可能会产生巨大的开销。另一个问题是序列化,由于附加数据可能会失败。
有没有优雅的解决方案?到目前为止,我唯一想到的是在迭代数据集之前包装数据对象。另一方面,这种方法可能会使模型更新出现问题......
天真的想法:不应该只是在仅限于此模板的模板中使用的变量的范围?在重复模板的特殊情况下进一步迭代?
答案 0 :(得分:0)
您可以输入 - 建议您的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
天真的想法:不应该只是在仅限于此模板的模板中使用的变量的范围吗?在重复模板的特殊情况下还有一次迭代吗?
这听起来对我来说是不可能的,因为(除了这会使实现过于复杂)有时候想要在嵌套模板中绑定变量:
<template repeat="{{a in lst}}">
{{bound_here}}
<template id="nested">
{{bound_here}}
...
根据你的建议,上面的绑定变得不可能。