聚合物1.x:通过单击纸卡标题切换铁塌陷

时间:2016-03-03 00:36:28

标签: polymer polymer-1.0 paper-elements

我想通过点击paper-card的{​​{1}}来切换heading元素内容的打开/关闭状态。

当我点击打开的内容时,我希望卡片保持打开状态。而不是切换到关闭状态。

Open this jsBin to read further and demo what I'm describing

http://jsbin.com/kecemorojo/edit?html,output
paper-card

2 个答案:

答案 0 :(得分:2)

  _toggleCollapse: function(e) {
    if (!e.target.classList.contains('card-content')) {
        this.$.collapse.toggle();
    }
  }

答案 1 :(得分:0)

In addition to the accepted answer,至少还存在两种其他解决方案:

if (e.target.classList.contains('title-text'))

here

if (e.target.classList.contains('title-text', 'style-scope', 'paper-card'))

here

根据具体情况,根据paper-card content部分内点击的内容,其中一个可能会更好。

http://jsbin.com/kacatozolo/1/edit?html,output
<!doctype html>
<head>
  <meta charset="utf-8">
  <!---- >
  <base href="https://polygit.org/components/">
  <!---- >
  Toggle below/above as backup when server is down
  <!---->
  <base href="https://polygit2.appspot.com/components/">
  <!---->
  <script src="webcomponentsjs/webcomponents-lite.min.js"></script>
  <link href="polymer/polymer.html" rel="import">
  <link href="paper-card/paper-card.html" rel="import">
  <link href="iron-collapse/iron-collapse.html" rel="import">
</head>
<body>

<dom-module id="x-element">

<template>
  <style></style>
  <paper-card heading="Click Me to Open" on-tap="_toggleCollapse">
    <iron-collapse id="collapse">
      <div class="card-content">
        I want to do stuff inside this content area. Some of it will involve clicking things. But when I click things, I want this paper card to remain open and not close. So I can still see this text and the other things I need to click on. But, unfortunately, with this setup, when you click on this text, the card closes and no one can read the text anymore. I'm looking for a solution that let's me open and close the card by clicking on the header "Click Me to Open" only. See what I mean by clicking on this paragraph right now. Watch it close. And not remain open like I want it.
      </div>
    </iron-collapse>
  </paper-card>
</template>

<script>
  (function(){
    Polymer({
      is: "x-element",
      _toggleCollapse: function(e) {
        if (e.target.classList.contains('title-text', 'style-scope', 'paper-card')) {
          this.$.collapse.toggle();
        }
      },
    });
  })();
</script>

</dom-module>

<x-element></x-element>

</body>