OK. Il mio codice HTML è come sotto.Handlebar.js non aggiorna il mio modello
E sto compilando il suddetto tramite Handlebar.js e i dati sono ricevuti dal server. Ecco il codice.
$.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));
});
Quando il codice viene eseguito la prima volta, sembra soddisfacente. Ma quando chiamo $ .get la seconda volta (e così via), il modello non viene aggiornato con i nuovi dati.
Inoltre, stampo l'intera stringa di dati, per assicurarmi che i dati vengano aggiornati dal server ed è così.
Quando controllo il mio Chrome, mi dice "Uncaught TypeError: Impossibile chiamare il metodo 'match' di null".
È qualcosa a che fare con "compile"?
oh uomo. Sono uno strumento Grazie per l'aiuto. :) – ericbae
Oppure puoi spostare questo blocco: 'var source = $ (" # some-template "). Html();' 'var template = Handlebars.compile (source);' al di fuori di '$. get() 'callback, quindi basta recuperare il template e compilarlo una volta, risparmiando risorse/velocità. –
@GarciaWebDev: Sì, è un buon punto. Di solito seppellisco tutto questo all'interno di un semplice gestore di template che si occupa della compilazione e del caching al primo utilizzo. Tuttavia, ritengo comunque che sia una buona idea non mescolare i modelli e il contenuto. –