OK. Mój HTML wygląda jak poniżej.Handlebar.js nie odświeżając mojego szablonu
I zapełniam powyższe za pomocą Handlebar.js, a dane są odbierane z serwera. Oto kod.
$.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));
});
Gdy kod jest uruchamiany po raz pierwszy, wygląda dobrze. Ale kiedy zadzwonię do $ .get po raz drugi (i tak dalej), szablon nie zostanie odświeżony z nowymi danymi.
Wydrukję również cały ciąg danych, aby upewnić się, że dane są odświeżane z serwera i tak jest.
Kiedy sprawdzam w moim Chrome, mówi mi "Uncaught TypeError: Can not call method 'match' of null".
Czy to ma coś wspólnego z "kompilacją"?
o człowieku. Jestem narzędziem. Dzięki za pomoc. :) – ericbae
Lub możesz przenieść ten blok: 'var source = $ (" # some-template "). Html();' 'var template = Handlebars.compile (źródło);' poza '$. get() 'callback, więc wystarczy pobrać szablon i skompilować go raz, oszczędzając zasoby/prędkość. –
@GarciaWebDev: Tak, to dobra uwaga. Zwykle zakopuję to wszystko w prostym menedżerze szablonów, który zajmuje się kompilowaniem i buforowaniem przy pierwszym użyciu. Jednak nadal uważam, że dobrym pomysłem jest nie mieszanie szablonów i treści. –