【发布时间】:2013-11-04 16:34:34
【问题描述】:
我是使用模板的新手,我有一个关于重用模板的问题。加载时,我得到模板和数据:
$(function() {
var source, content;
$.get('/templates/template.html', function(data) {
source = data;
})
$.getJSON("/data/data.php", function(data) {
content = data;
})
$(document).ajaxStop(function() {
window.template = Handlebars.compile(source);
$('#user-list tbody').html(window.template(content));
})
})
模板如下:
{{#users}}
<tr>
<td> {{name}} </td>
</tr>
{{/users}}
这是同一文件中的 HTML:
<div id="content-div">
<table id="user-list">
<thead></thead>
<tbody></tbody>
</table>
</div>
当我想追加一行时,如何重用这个模板?例如:
function loadMore() {
$.ajax({
type : 'POST',
url : '/data/more.php',
dataType : 'json',
success : function(data) {
$('#user-list tbody').append(window.template(data));
}
});
}
它获取数据但不会附加到tbody。这是为什么呢?
更新:另外,是否可以将整个表结构都放在模板文件中?
<table id="user-list">
<thead></thead>
<tbody>
{{#users}}
<tr>
<td> {{name}} </td>
</tr>
{{/users}}
</tbody>
</table>
只有在 initial 页面加载时,它才会拉入整个结构,但是当我想 追加 额外的行时,它只会追加 <tr> 部分。
更新:也许是一个题外话的问题,但这通常是处理这种情况的正确方法吗?我设想一个充满模板的文件夹,我可以在需要时将其拉入并使用它们。通过 ajax 调用获取它们是否正确?
【问题讨论】:
-
应该是
{{#each users}}.. 错字? -
不,这行不通。无论如何,无论哪种方式,我都会得到数据。它只是不会在之后追加。
-
这应该可以。如果您仍然有问题,如果您为此设置演示,我可以帮助您。
-
你能调试javascript代码并检查more.php用户数据是否正确以及window.template(data)是否生成正确的html?
标签: javascript jquery templates handlebars.js