我使用的是iron-page元素,但采用的是嵌套方式。示例:
在文件0-0.html中:
<iron-page>
<1-0></1-0>
<2-0></2-0>
</iron-page>在文件1-0.html中:
<iron-page>
<1-1></1-1>
<1-2></1-2>
<1-3></1-3>
</iron-page>在文件2-0.html中:
<iron-page>
<2-1></2-1>
<2-2></2-2>
<2-3></2-3>
</iron-page>我需要知道何时显示从<1-1>到<2-3> (让我们称它们为子元素)的元素之一。为此,我使用了selectedAttribute属性,但问题是:
为什么当一个母亲iron-page元素被禁用时,他保留了一个被选中的项目?最后,我要做的是在显示或隐藏iron-page子元素时得到通知。有人能帮我吗?
谢谢
发布于 2017-05-09 12:31:52
关于传播的一切都可以通过绑定来完成。所以就像
<iron-pages>
<1-0 selected="{{selectedOne}}"></1-0>
<2-0 selected="{{selectedTwo}}"></2-0>
</iron-pages>在您定义属性的子元素中:selected。并将其设置为notify: true。通知意味着,每当此属性发生更改时,绑定到此值的父元素属性将自动更新。
属性:{ selected:{ value: null,notify: true }
在子元素中,iron-pages必须绑定到selected属性。比如:
<iron-pages selected="{{selected}}">仅此而已。每当选定的属性更改(在子元素中)时,父元素将自动重新加载他的selectedOne和selectedTwo属性。
您还可以向selectedOne和selectedTwo属性添加观察者,这些属性将调用某些函数,以便准确地知道何时执行某些逻辑操作。
所以在母元素中:
properties: {
selectedOne: {
value: null,
observer: "_selectedOneChanged"
},
selectedTwo: {
value: null,
observer: "_selectedTwoChanged"
}
}另一个解决方案
上面的解决方案是好的,但是在更多的嵌套元素中,它几乎不可能工作,而且非常混乱。所以另一种方法是事件侦听器。聚合物有火的方法,这是很好的了解。更多信息,你可以在文档找到。
简要说明:
在子元素中,您所做的事情如下
this.fire("iron-pages-changed", {page: this.selected});和母要素:
ready: function() {
this.addEventListener("iron-pages-changed", function() {
... some logic ...
}
}https://stackoverflow.com/questions/43868768
复制相似问题