3

如何获得.content嵌套的JS 访问权限<template>

我正在尝试<template>使用我的imported-template元素(从外部文件中获取模板内容)进行扩展,并且我想<imported-content>以与 native 类似的方式实现<content>。为此,我只是尝试

this.content.querySelector("imported-content")

但它发生了,嵌套模板this.content是空的。

<script>
    (function() {
        var XHTMLPrototype = Object.create((HTMLTemplateElement || HTMLElement).prototype);
        XHTMLPrototype.attachedCallback = function() {
            //..
            var distributeHere = this.content.querySelector("imported-content");
            var importedContent = document.createElement("span");
            importedContent.innerHTML = "Imported content";
            distributeHere.parentNode.replaceChild(importedContent, distributeHere);
        }

        document.register('imported-template', {
            prototype: XHTMLPrototype,
            extends: "template"
        });
    })();
</script>
<template id="fails" bind>
    <ul>
        <template is="imported-template" bind="{{ appdata }}">
            <li>
                <imported-content></imported-content>
            </li>
        </template>
    </ul>
</template>

JSFiddle在这里

我不确定这是错误、设计问题还是只是模板 shim 限制。

我想也许我在错误的生命周期回调中检查它,所以我MutationObserver 在这里尝试了小提琴,但也没有发生突变。

4

1 回答 1

0

您的选择器更改为this.content.querySelector("[is='imported-content']"). 这是你想做的吗?

于 2014-05-24T12:21:23.357 回答