2

有没有在另一个 HTML 模板元素中使用 HTML 模板元素的示例?

好的,这是一个简单的例子:

这是我的主文件index.html,我在其中导入header.html并克隆其中的模板并将其附加到我的div:

<!DOCTYPE html PUBLIC "_//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xhtml="http://www.w3.org/1999/xhtml" lang="en-us" xml:lang="en-us">
<head>
   <meta content="text/html; charset=utf-8" http-equiv="content-type">
   <link id="imported-header" rel="import" href="static/components/header.html">
</head>
<body>
    <div class="master"></div>
</body>

<script>
    var headerImp = document.querySelector('#import-header').import;
    var headerTemp = headerImp.querySelector(".header");
    var header_01= headerTemp .content.cloneNode(true);
    document.querySelector(".master").appendChild(header_01);
</script>
</html>

然后在我的header.html中,我导入另一个 HTML 并将其添加到模板中(我觉得在另一个模板中调用 document 是错误的模板,但我可能是错的。):

<link id="import-field" rel="import" href="static/components/credit_field.html">

<template class="header">
    <div class="credit"> </div>
</template>

<script>
    var creditImp = document.querySelector('#import-field').import;
    var creditTemp = creditImp.querySelector(".field");
    var credit_01 = creditTemp.content.cloneNode(true);
    credit_01.querySelector(".row").innerHTML = "User1";
    var credit_02 = creditTemp.content.cloneNode(true);
    credit_02.querySelector(".row").innerHTML = "User2";
    document.querySelector(".credit").appendChild(credit_01);
    document.querySelector(".credit").appendChild(credit_02);
</script>

这是credit_field.html只是一个包含该字段的模板:

<template class="field">
    <div class="row"></div>
</template>

显然加载它没有任何错误,但它给了我导入错误!只是为了记录,如果我将它们都导入到我的 index.html 并将它们附加到那里,它会工作得很好,但我正在寻找一种在另一个模板中拥有模板的方法。

再次澄清我的问题,我想知道如何在另一个 HTML 模板元素中添加一个 HTML 模板元素?

注意:我见过有人使用 Django 模板,但我想在 HTML、JavaScript 和 jQuery 中对其进行排序以避免复杂性。

4

1 回答 1

0

简单,您对要用作模板的 html 页面进行 ajax 调用,然后放置它beforeafter 适当的节点

<script type="text/javascript">
    $.ajax({
        url: 'static/components/credit_field.html',
        success: function(content) {
            $('template')[0].before(content);
        }
    });
</script>
于 2017-11-11T22:07:27.100 回答