【发布时间】:2016-07-23 23:05:28
【问题描述】:
我正在尝试基于 Polymer 中的 Google Inbox 开发可折叠列表。
我创建了一个聚合物元素列表,其中每个元素都是 paper-material,里面有一个 iron-collapse。
iron-collapse 包含数据和几个 paper-button。
单击父级paper-material 时,我需要显示/隐藏<iron-collapse> 元素。
这非常有效,但不幸的是,该事件在单击 paper-button 后也会触发,例如iron-collapse里面的Send-Button。
我尝试将 event.stopPropagation() 添加到孩子的按钮处理程序中,但单击按钮时 iron-collapse 仍然折叠。
有什么想法吗?
父容器代码:
<paper-material id="papercontainer" elevation="1" class="container padded" animated style="border-radius:4px;">
<div class="container">
<div class="container flex-start-justified">
<div class="flexchild">
<h4 class="smaller-margin">Bill Gates</h4>
<p class="smaller-margin">bill@gates.com</p>
<p class="paper-font-caption smaller-margin">Date received: 01/01/2015</p>
</div>
<p>
<paper-button raised on-click="send">Send</paper-button>
</p>
</div>
<!--Code for iron-collapse (child): -->
<div class="container flex-horizontal">
<iron-collapse id="collapse" class="flexchild">
<div class="flexchild collapse-content" style="margin-top:10px;">
<paper-button>Edit Mail</paper-button>
</div>
</iron-collapse>
</div>
</div>
</paper-material>
Javascript:
Polymer({
is: 'zapytania-result-element2',
toggle: function() {
this.$.collapse.toggle();
},
listeners: {
'tap': 'regularTap'
},
regularTap: function(e) {
console.log('toggle iron-collapse');
if(this.$.collapse.opened) {
this.$.collapse.hide();
this.$.papercontainer.elevation = 1;
} else {
this.$.collapse.show();
this.$.papercontainer.elevation = 5;
}
},
send: function() {
sendMail();
}
}
【问题讨论】:
-
请出示一些代码。
-
我提供了一些代码。一般来说, Iron-collapse 显示/隐藏,当它被点击时,以及当里面的发送按钮被点击时。如何规避?
-
看起来 Iron-collapse 不会监听点击事件。你确定你自己不打电话给
toggle吗?toggle()是从哪里调用的? -
我已经弄清楚了,请参阅下面的答案。谢谢你的帮助,先生。
标签: polymer