我正在使用 Web 组件和普通 javascript 构建一个应用程序。我想使用 vaadin-router 进行路由。
In my 索引.html我只显示Web组件app.module
:
<!DOCTYPE html>
<body>
<mp-app-root></mp-app-root>
</body>
</html>
应用程序模块是一个简单的 Web 组件。它应该在模板中显示路由模块。 Shadow DOM 是可选的。
应用程序模块.js
import Template from './app.module.template.js'
class AppModule extends HTMLElement {
connectedCallback() {
this.innerHTML = Template.render();
}
}
customElements.define('mp-app-root', AppModule)
模板只是渲染标签,路由应该发生在其中。
应用程序模块模板.js
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
- 当我在 console.logging 中记录某些内容时,它也有效
现在,我正在使用vaadin 路由器用于路由,我想访问<app-routing-module>
- 使用 querySelector 标记,如下所示:
const outlet = document.querySelector('mp-app-root').querySelector('app-routing-module')
但它总是null.
console.log(document.querySelector('mp-app-root')
工作并打印以下内容:
<mp-app-root>
<app-routing-module></app-routing-module>
</mp-app-root>