我有一些小模板字符串,它们将通过同一页面上的Mustache.js呈现。我不需要为模板创建单独的html文件。
存储模板的选项:
存储在javascript变量中:破解多行字符串,大量转义引号。
存储为隐藏div的innerHTML。
我尝试了方法#2,但它似乎无法正常工作。
小提琴: http://jsfiddle.net/RHwnq/2/
<html>
<head></head>
<body>
<div id='templates' class='hide' align="">
<div id='tableTemplate'>
<table class="table">
{{#name_list}}
<tr><td> {{name}} </td></tr>
{{/name_list}}
</table>
</div>
</div>
<script>
var template = $('#tableTemplate').html();
console.log(template);
</script>
</body>
</html>
此日志:
{{#name_list}}
{{name}}
{{/name_list}}
<table class="table"><tbody><tr><td></td></tr></tbody></table>
而不是:
<table class="table">
{{#name_list}}
<tr><td> {{name}} </td></tr>
{{/name_list}}
</table>
这可能是由于浏览器进行了一些标记更正。 在HTML页面中存储HTML模板有哪些其他好的技巧?
答案 0 :(得分:21)
我将它们存储在脚本标记中,因此它们不会被渲染,如下所示:
<script id="abc-template" type="text/html">
<h1>{{name}}</h1>
</script>
然后您可以像这样引用它们:
var template = $('#abc-template').html();
var html = Mustache.to_html(template, data);
$('#abc-div').html(html);
答案 1 :(得分:6)
使用<script>
代码非常适用于此:
<script id="tableTemplate" type="text/html">
<table class="table">
{{#name_list}}
<tr><td> {{name}} </td></tr>
{{/name_list}}
</table>
</script>
它实际上是替代品,它适用于您的var template = $('#tableTemplate').html();
答案 2 :(得分:1)
根据您的IDE,您可能会或可能不会在<script></script>
块中获得HTML语法突出显示。我像你一样使用div
块,但添加
#templates {display: none;}
到CSS。
答案 3 :(得分:0)
我将使用HTML“模板”标签。
<template id="tmp">Some HTML here</template>
请参见以下示例: