在模板中导入HTML模板

时间:2017-07-04 10:07:28

标签: javascript html5 html5-template

是否有在其他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并将其添加到模板中(我觉得在另一个模板中调用文档对于模板是错误的,但我可能是错的。 ):

<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中对其进行排序以避免复杂性。

1 个答案:

答案 0 :(得分:0)

很简单,您对要用作模板的html页面进行了ajax调用,并将beforeafter放置到正确的节点

<script type="text/javascript">
    $.ajax({
        url: 'static/components/credit_field.html',
        success: function(content) {
            $('template')[0].before(content);
        }
    });
</script>