【问题标题】:Polymer: Access dynamically created node of dynamically created custom elementPolymer:访问动态创建的自定义元素的动态创建节点
【发布时间】:2018-04-22 13:21:38
【问题描述】:

在将我的聚合物项目从 1.x 更新到 2.0 时,我遇到了这个问题

我正在像这样将我的自定义元素之一包装在 dom-repeat 中

主持人

<dom-repeat items="{{customer.hubs}}" as="item">
      <template>
        <paper-card elevation="2" class="hubCard">
          <div style="font-size: 25px;font-weight: bold;line-height: 48px">HUB [[printIndex(customer.hubs,index)]]</div>
          <hub-info hub="{{item}}" isloading="{{isloading}}" refresh-customer="[[refreshCustomer]]"/>
        </paper-card>
      </template>
    </dom-repeat>

自定义元素部分代码如下

自定义元素

<div class="blueButton" id="debugTab" style="padding-top: 10px">
  <dom-if if="{{displayDebugger}}">
  <template>
    <div class="headButton" on-click="toggleDebugger" id="debuggerTab">
     <span>Debugger</span>
      <span style="position: absolute;right: 2%">
    <!--<i id="downArrow4" class="material-icons fa-arrow-down">keyboard_arrow_down</i>-->
    <iron-icon id="downArrow4" icon="icons:arrow-drop-down"></iron-icon>
      </span>
      </div>
</template>
  </dom-if>
<iron-collapse id="collapseDebugger" >
<hub-debugger hub-id="{{hub.hubId}}" isloading="{{isloading}}"></hub-debugger>
</iron-collapse>
  </div>

问题

首先我尝试访问 iron-collapse 作为 this.$.collapseDebugger 但我不能,因为我认为自定义 elemnt hub-info 在 dom-repeat 内,所以我使用了 this.shadowRoot.querySelector('#collapseDebugger') 并访问了它。 我再次尝试以 this.shadowRoot.querySelector('#downArrow4') 的形式访问 iron-icon(它再次在 dom-if 中动态创建),但我无法访问它。

如何访问动态元素内的动态节点? 如果有嵌套的动态创建呢?

【问题讨论】:

    标签: polymer shadow-dom polymer-2.x


    【解决方案1】:

    this.shadowRoot.querySelector(selector) 语法应该可以工作。

    条件模板真的渲染了吗?您是否在自定义元素中导入 polymer/lib/elements/dom-if.html?这是必需的,如果您仅导入 polymer/polymer-element.html

    【讨论】:

    • 是的,条件模板已渲染,我同时导入了 polymer-element.html 和 dom-if.html。
    • 奇怪。它对我有用。我能想到的另一件事是您试图过早地访问该元素。但如果它在 Polymer 1 中工作正常,那么我不确定。
    • 不仅在这种情况下,即使在我的项目的几个其他自定义元素中,而不是 this.$.id 选择器 this.shadowRoot.querySelector(selector) 也只能工作。我错过了什么吗?
    猜你喜欢
    • 2011-03-23
    • 2021-05-18
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 2018-03-27
    • 1970-01-01
    • 2020-06-15
    相关资源
    最近更新 更多