嵌套影子根中的查询元素
Query element in nested shadow root
场景:
在我的应用程序中,我嵌套了 shadow-roots,我想从外部 获取 inner shadow-root 中的一个元素阴影根.
其实我的意思是考虑这个场景
<Component 1 id="headerComponent">
#shadow-root // outer shadow-root.
<div class="header"></div> // element in outer shadow-root.
#shadow-root // inner shadow-root.
<Component 2 id="titleComponent"> // We have component 2 inside the shadow root of component 1.
<input class="titleInput"> // element inside inner shadow-root.
现在,如果我在 Component 1.js
中并且想查询 Component 1.js
中的任何元素,我将编写此代码块 this.shadowRoot.querySelector('.header');
,它运行良好。
但是,如果我在 Component 1.js
中并且想要查询一个元素(这里是 <input>
和 class titleInput) 在Component 2.js
,我该怎么做?
尝试类似 this.shadowRoot.querySelector('.titleInput');
的语句似乎不起作用 returns null
.
我设法解决了这个问题。
这是 js 的片段,可以发挥神奇作用。
this.$.titleComponent.shadowRoot.querySelector('.input-wrap');
对于那些不熟悉聚合物架构的人。
在这里,正如我在Component 1
。
因此,this
指的是组件 1(组件 1 class 方法、属性和 this.$ 用于组件 1 class 模板内的 select 元素,其 id 后跟 this .$.elementID), this.$.titleComponent
selects titleComponent 并且此语句 selects 元素 shadowRoot.querySelector('.input-wrap')
.
场景: 在我的应用程序中,我嵌套了 shadow-roots,我想从外部 获取 inner shadow-root 中的一个元素阴影根.
其实我的意思是考虑这个场景
<Component 1 id="headerComponent">
#shadow-root // outer shadow-root.
<div class="header"></div> // element in outer shadow-root.
#shadow-root // inner shadow-root.
<Component 2 id="titleComponent"> // We have component 2 inside the shadow root of component 1.
<input class="titleInput"> // element inside inner shadow-root.
现在,如果我在 Component 1.js
中并且想查询 Component 1.js
中的任何元素,我将编写此代码块 this.shadowRoot.querySelector('.header');
,它运行良好。
但是,如果我在 Component 1.js
中并且想要查询一个元素(这里是 <input>
和 class titleInput) 在Component 2.js
,我该怎么做?
尝试类似 this.shadowRoot.querySelector('.titleInput');
的语句似乎不起作用 returns null
.
我设法解决了这个问题。 这是 js 的片段,可以发挥神奇作用。
this.$.titleComponent.shadowRoot.querySelector('.input-wrap');
对于那些不熟悉聚合物架构的人。
在这里,正如我在Component 1
。
因此,this
指的是组件 1(组件 1 class 方法、属性和 this.$ 用于组件 1 class 模板内的 select 元素,其 id 后跟 this .$.elementID), this.$.titleComponent
selects titleComponent 并且此语句 selects 元素 shadowRoot.querySelector('.input-wrap')
.