可以使用一些帮助来弄清楚为什么我的Mustache模板无法正确呈现。我很困惑,为什么以下不起作用。我确定这是我的一个小愚蠢的错误或其他......
var tableRows = [
{name: 'name1',
values: ['1','2','3']},
{name: 'name2',
values: ['1','2','3']},
{name: 'name3',
values: ['1','2','3']}
];
var template = $('#mustache-template').html();
$('#target').append(Mustache.render(template, {rows: tableRows}));
HTML模板:
<div id="mustache-template">
<table>
<tbody>
{{#rows}}
<tr class="">
<td>{{name}}</td>
{{#values}}
<td>{{.}}</td>
{{/values}}
</tr>
{{/rows}}
</tbody>
</table>
</div>
我期待一个表,每个数组项都是自己的行,但我得到的是:
[object Object]
这是一个jsFiddle来说明:http://jsfiddle.net/gF9ud/
答案 0 :(得分:13)
问题是浏览器将模板处理为无效的表元素。将模板存储在这样的页面上并不是一个好主意,使用<script type="text/template">
来包装它们:
<script id="mustache-template" type="text/template">
<table>
{{#rows}}
<tr class="">
<td>{{name}}</td>
{{#values}}
<td>{{.}}</td>
{{/values}}
</tr>
{{/rows}}
</table>
</script>
答案 1 :(得分:3)
我找到的另一个解决方案是将小胡子注释掉:
<div id="mustache-template">
<table>
<tbody>
<!-- {{#rows}} -->
<tr class="">
<td>{{name}}</td>
{{#values}}
<td>{{.}}</td>
{{/values}}
</tr>
<!-- {{/rows}} -->
</tbody>
</table>
</div>
对我来说,它完全按照我的希望呈现。我认为浏览器会在tr
标记之间看到代码。