聚合物多铁-塌陷

Polymer Multiple Iron-Collapse

聚合物文档不清楚如何使用 iron-collapse 创建多重切换。有没有一种简单的方法可以让每个项目切换?我查看了 ,但无法正常工作。也许从那时起聚合物发生了一些变化。下面是我正在使用的代码示例。

<div on-click="toggle"><paper-item><a class="paper-item-link"><strong>List Items</strong></a></paper-item></div>
<iron-collapse id="collapse">
<div>Content</div>
</iron-collapse>

<div on-click="toggle"><paper-item><a class="paper-item-link"><strong>List Items</strong></a></paper-item></div>
<iron-collapse id="collapse">
<div>Content</div>
</iron-collapse>

  toggle: function() {
    this.$.collapse.toggle();
  },

Polymer 的 automatic node finding 通过 ID 映射节点,但是您有两个具有相同 ID 的节点,因此只有最后一个遇到的节点会映射到该 ID(即 this.$.collapse 指的是第二个 iron-collapse 在你的例子中)。此外,由于您的 click-handler 指的是相同的 iron-collapse,因此单击时两个 paper-item 将切换相同的 iron-collapse

最快的解决方案是为每个 iron-collapse 使用唯一的节点 ID 并使用唯一的 click 处理程序:

<head>
  <base href="https://polygit.org/polymer+v1.9.2/components/">
  <script src="webcomponentsjs/webcomponents-lite.js"></script>
  <link rel="import" href="paper-item/paper-item.html">
  <link rel="import" href="iron-collapse/iron-collapse.html">
</head>
<body>
  <x-foo></x-foo>

  <dom-module id="x-foo">
    <template>
      <div on-click="toggle1">
        <paper-item>
          <a class="paper-item-link"><strong>List Items</strong></a>
        </paper-item>
      </div>
      <iron-collapse id="collapse1">
        <div>Content</div>
      </iron-collapse>

      <div on-click="toggle2">
        <paper-item>
          <a class="paper-item-link"><strong>List Items</strong></a>
        </paper-item>
      </div>
      <iron-collapse id="collapse2">
        <div>Content</div>
      </iron-collapse>
    </template>
    <script>
      HTMLImports.whenReady(function() {
        Polymer({
          is: 'x-foo',
          toggle1: function() {
            this.$.collapse1.toggle();
          },
          toggle2: function() {
            this.$.collapse2.toggle();
          }
        });
      });
    </script>
  </dom-module>
</body>

codepen