타로 카드를 보여주는 맞춤 구성 요소가 있습니다. 사용자 지정 요소 전에 템플릿을 정의했습니다.
wc의 connectedCallback에서 shadowroot에 템플릿 자체를 첨부하고 shadowroot에 복제하여 템플릿을 찍었습니다. 나는 두 가지 이유로 이것을했다 :바닐라 js가있는 자체 포함 된 사용자 정의 요소에서 템플릿을 스탬프 처리하는 방법은 무엇입니까?
- 자기 포함 된 모듈이되기를 원한다. 따라서 내 사용자 정의 요소와 동일한 위치에 템플릿을 정의하고 싶습니다.
내 템플릿을 소유자 문서에 부착하지 않고 사용할 수 있도록 스탬프 처리하는 유일한 방법 인 것처럼 보입니다.
var tmpl = ` <template id="tmpl"> <h1 class="tarot-title"><slot name="title">NEED TITLE</slot> </h1> <img src="${this.imageurl}" alt=""> <p><slot name="subtitle">NEED A SUBTITLE</slot></p> </template>`; class BdTarot extends HTMLElement { ...constructor etc... connectedCallback() { this._shadowRoot.innerHTML = tmpl; var _tmpl = this._shadowRoot.querySelector('#tmpl'); this._shadowRoot.appendChild(_tmpl.content.cloneNode(true)); } } customElements.define('bd-tarot', BdTarot);
이 만든 문제는 내가 내 페이지에서 사용하는 모든 타로 카드의 구성 요소가 같은 템플릿은 동일한 ID를 가진 아이, 전부이다 가지고있다. 그들은 어둠의 길에 있기 때문에 중요합니까? 웃긴 냄새가 난다.
나의 목표는 단순히 웹 구성 요소 사양이 모두 어떻게 어울리는지를 이해하려고하는 것이다. 내 질문은, 내 구성 요소 코드를 함께 유지하고 소유자가 의사에게 다시 참조하지 않는이 작업을 수행하는 더 좋은 방법은 무엇입니까? html 가져 오기가 대부분의 브라우저 공급 업체에서 채택되지 않으므로 템플릿 사양이 사용자 정의 요소와 호환되지 않습니다.