Vorrei caricare altri modelli al volo. È possibile?È possibile caricare un modello di Handlebars tramite Ajax?
risposta
È possibile registrare nuovi modelli in Ember.TEMPLATES
. Saranno quindi disponibili per le visualizzazioni.
Un estratto dal mio codice (jQuery gestore Ajax):
success: function(data) {
$(data).filter('script[type="text/x-handlebars"]').each(function() {
templateName = $(this).attr('data-template-name');
Ember.TEMPLATES[templateName] = Ember.Handlebars.compile($(this).html());
});
}
Questo è tutto.
Stavo solo cercando la stessa cosa e sto per avere un gioco con lo snippet sotto
di credito: borismus su github https://gist.github.com/2165681
<script>
/*
* Loads a handlebars.js template at a given URL. Takes an optional name, in which case,
* the template is added and is reference-able via templateName.
*/
function loadTemplate(url, name, callback) {
var contents = $.get(url, function(templateText) {
var compiledTemplate = Ember.Handlebars.compile(templateText);
if (name) {
Ember.TEMPLATES[name] = compiledTemplate
} else {
Ember.View.create({ template: compiledTemplate }).append();
}
if (callback) {
callback();
}
});
}
</script>
Interessante, anzi. È più una specie di primitivo, per caricare un singolo modello. La mia soluzione precedente consente un numero qualsiasi di modelli di caricamento * (più appropriato per il mio bisogno) *. –
Vedo. In realtà mi piace molto l'idea di un file "include" multi-template, solo per ottenere un po 'di rumore dal file HTML e non creare troppe richieste. Buona chiamata – joevallender
Sto usando requirejs con testo plugin per caricare modelli di manubri in modo dinamico.
r.js ottimizzatore compilerà il modello handlerbar di file di testo, che può essere caricato facilmente utilizzando requirejs o anche ajax
Mike ... ti dispiacerebbe avvolgendo quel codice su in un pacchetto più ampio in modo che possiamo vedere il ciclo di vita? Come stai memorizzando il modello esterno? Qual è il suo tipo di file? Lo stai caricando con get o getJSON? – commadelimited
Recupero il contenuto del modello dai risultati di una chiamata 'get', contenente entità HTML, poiché arriveranno in una semplice risposta di pagina standard. –
Questa è una [mia] soluzione per il risparmio mondiale :) Thx! –