代码示例
<!-- 定义组件模板 -->
<template id="UserNameTemplate">
<style>
.user-name {
color: green;
}
</style>
<div class="user-name"></div>
</template>
<script>
// 定义组件
class UserName extends HTMLElement {
constructor() {
super();
let shadow = this.attachShadow({
mode: "closed" });
let content = document
.querySelector("#UserNameTemplate")
.content.cloneNode(true);
console.log(this.getAttribute("name"));
content.querySelector(".user-name").innerText =
this.getAttribute("name");
shadow.appendChild(content);
}
}
// 注册组件
window.customElements.define("user-name", UserName);
</script>
<!-- 使用组件 -->
<user-name name="Tom"></user-name>
遗留问题
- 按照文章写的demo,
this.getAttribute("name")
无法获取数据,导致传参失败