绑定到兄弟元素

时间:2015-06-16 23:37:30

标签: templates polymer

我发现不再支持直接绑定到兄弟元素 - https://www.polymer-project.org/1.0/docs/migration.html#binding-to-sibling-elements

1.0的建议方法适用于属性,但是如何直接绑定到兄弟元素本身,例如:

<template>
  <x-publisher id="publisher"></x-publisher>
  <x-subscriber publisher="{{$.publisher}}"></x-subscriber>
</template>

我在0.5中使用它来访问兄弟元素的方法以及属性。有没有办法在1.0中这样做?一般来说这是一种不好的做法吗?

更新

根据Vartan的评论,我看了一下iron-meta&amp; amp;似乎你可以在x-publisher定义中做这样的事情:

new Polymer.IronMeta({key: 'publisher', value: this});

然后在x-subscriber定义中你可以这样做:

this.publisher = (new Polymer.IronMeta()).byKey('publisher');

但是,您无法通过此方式获得绑定系统的好处 - 例如,您无法使用观察者数组来观察发布者对象的基于路径的属性更改。您可以直接设置一个对象观察者,但开始变得比直接绑定到兄弟姐妹的旧0.5方式更加混乱。

理解这是否只是性能权衡的一部分,但想确认那不是更好的方法!也很高兴知道绑定到完整元素通常是一个性能问题。

1 个答案:

答案 0 :(得分:2)

您可以这样做:

<template>
  <x-publisher id="publisher"></x-publisher>
  <x-subscriber publisher="{{getElement('publisher')}}"></x-subscriber>
</template>
...
getElement: function(name) { return this.$[name]; }