首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Web组件中使用标记的querySelector

如何在Web组件中使用标记的querySelector
EN

Stack Overflow用户
提问于 2020-07-24 11:37:14
回答 1查看 2.5K关注 0票数 2

我正在用Web组件构建一个应用程序,只有vanila。我想用vaadin路由器路由。

在我的index.html中,我只显示web组件app.module

代码语言:javascript
复制
<!DOCTYPE html>
    <body>
        <mp-app-root></mp-app-root>
    </body>
</html>

应用程序模块是一个简单的web组件。它应该在模板中显示路由模块。阴影DOM是可选的。

app.module.js

代码语言:javascript
复制
import Template from './app.module.template.js'

class AppModule extends HTMLElement {
    connectedCallback() {
        this.innerHTML = Template.render();
    }
}

customElements.define('mp-app-root', AppModule)

模板只是简单地呈现标记,在那里应该进行路由。

app.module.template.js

代码语言:javascript
复制
import './routing.module.js'

export default {
    render() {
        return `${this.html()}`;
    },

    html() {
        return `<script type="module" src="./routing.module.js"></script>
                <app-routing-module></app-routing-module>`;
    },
}

如您所见,我正在导入脚本routing.module.js --当im console.logging之类的东西时,它也能工作。

现在,我使用vaadin-router进行路由,我想使用这样的querySelector访问<app-routing-module>-Tag:

const outlet = document.querySelector('mp-app-root').querySelector('app-routing-module')

但它始终是

console.log(document.querySelector('mp-app-root')工作并打印以下内容:

代码语言:javascript
复制
<mp-app-root>
    <app-routing-module></app-routing-module>
</mp-app-root>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-24 12:12:37

您可以在基于Webkit的浏览器(Safari,Chromium)中获得null,因为:

connectedCallback中,无法访问它刚刚创建的DOM

DOM元素还没有被完全解析。

这被认为是W3C网络组件标准的正确实现。

this.innerHTML有它的FireFox ( W3C标准的不同实现)的内容。

请参见:

正确代码:

代码语言:javascript
复制
setTimeout( () => {
  const outlet = document.querySelector('mp-app-root').querySelector('app-routing-module')
});

所有的WebComponent库在幕后都会做类似的事情;

延迟执行,直到事件循环为空,并且DOM准备接受您的选择/添加。

注意:querySelector采用一个选择器,因此您可以编写:

代码语言:javascript
复制
  const outlet = document.querySelector('mp-app-root app-routing-module')
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63072769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档