6
確定。我的HTML如下所示。Handlebar.js不刷新我的模板
<div id="json"></div>
<div id="content-placeholder">
<script id="some-template" type="text/x-handlebars-template">
<table>
<thead>
<th>col 1</th>
<th>col 2</th>
</thead>
<tbody>
{{#results}}
<tr>
<td>{{col_1}}</td>
<td>{{col_2}}</td>
</tr>
{{/results}}
</tbody>
</table>
</script>
</div>
而且我填充上述通過Handlebar.js和數據從服務器接收。這是代碼。
$.get(get_data_url, function(data)
{
$('#json').empty().append(data);
var rows = eval('(' + data + ')');
var source = $("#some-template").html();
var template = Handlebars.compile(source);
$("#content-placeholder").empty().append(template(rows));
});
當代碼第一次運行時,它看起來很好。但是當我第二次調用$ .get(等等)時,模板不會被新數據刷新。
我還打印出整個數據串,以確保數據從服務器刷新,它是。
當我檢查我的瀏覽器,它告訴我「遺漏的類型錯誤:無法調用空的‘比賽’。」
是否是與「編譯」?
哦。我是一個工具。謝謝你的幫助。 :) – ericbae
或者您可以移動此塊: 'var source = $(「#some-template」)。html();' 'var template = Handlebars.compile(source);' ''之外。 get()'回調,所以你只需要獲取模板並編譯一次,節省資源/速度。 –
@GarciaWebDev:是的,這是一個很好的觀點。我通常將所有這些內容都埋在一個簡單的模板管理器中,用於首次使用時編譯和緩存。不過,我仍然認爲不要混合模板和內容是一個好主意。 –