Handlebar.js nicht erfrischend mein template
OK. Meine HTML sieht wie folgt aus.
<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>
Und ich bin füllen den oben über Handlebar.js und die Daten vom server empfangen wird. Hier ist der code.
$.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));
});
Wenn der code zum ersten mal ausgeführt, es sieht gut aus. Aber wenn ich den $.Holen Sie sich das zweite mal (und so weiter), wird die Vorlage nicht aktualisiert mit den neuen Daten.
Ich auch drucken Sie das gesamte Daten-string in , um sicherzustellen, dass die Daten vom server aktualisiert, und es ist.
Wenn ich auf mein Chrome sagt mir "Uncaught TypeError: Cannot call method 'match' von null".
Ist es etwas zu tun mit "kompilieren"?
InformationsquelleAutor ericbae | 2011-08-19
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das erste mal Sie dies tun:
Ihre
<div>
verwandelt sich in diese:Die Vorlage gegangen ist. Verschieben Sie Ihre Vorlage:
irgendwo außerhalb
#content-placeholder
.var source = $("#some-template").html();
var template = Handlebars.compile(source);
außerhalb der$.get()
Rückruf, so dass Sie nur Holen Sie sich das template und compile es mal, die Einsparung von Ressourcen/der Geschwindigkeit.<script>
innerhalb der<head>
mit allen anderen Ressourcen (wie z.B. Javascripte und stylesheets). Dann brauchen Sie sich keine sorgen zu machen, es immer überschrieben, wenn nichts vernünftiges wird Durcheinander herum mit<head>
.