2017-07-04 146 views
1

在另一個HTML模板元素中使用HTML模板元素是否有任何示例?在模板中導入HTML模板

好,這裏是一個簡單的例子:

這是我的主文件的index.html,在它我導入了header.html,並在其中克隆的模板,並將它附加到我的格:

<!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並將其添加到模板(我的感覺是,調用文件是錯誤的˚F或模板中的其他模板,但我可能是錯的):

<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中對其進行排序以避免複雜性。

回答

0

容易,你做一個AJAX調用要作爲模板,你把它beforeafter適當的節點

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