2012-02-27 9 views

Respuesta

23

Puede registrar nuevas plantillas en Ember.TEMPLATES. Luego estarán disponibles para las vistas.

un extracto de mi código (jQuery manejador 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()); 
    }); 
} 

Eso es todo.

+1

Mike ... ¿le importaría envolver ese código en un paquete más grande, para que podamos ver el ciclo de vida? ¿Cómo está almacenando la plantilla externa? ¿Cuál es su tipo de archivo? ¿Lo estás cargando con un get o getJSON? – commadelimited

+0

Recupero el contenido de la plantilla de los resultados de una llamada 'get', que contiene entidades HTML, ya que llegarían en una respuesta de página estándar simple. –

+0

Esta es una [mi] solución de ahorro mundial :) ¡Gracias! –

7

que estaba buscando lo mismo y estoy a punto de tener un juego con el siguiente fragmento

de crédito: borismus en 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> 
+0

Interesante, de hecho. Es más una especie de primitivo, cargar una sola plantilla. Mi solución anterior permite cargar cualquier número de plantillas * (más apropiado para mi necesidad) *. –

+0

Ya veo. De hecho, me gusta bastante la idea de un archivo 'incluir' más multi-plantilla, solo para sacar algo de ruido del archivo HTML y no crear demasiadas solicitudes. Buena llamada – joevallender

1

estoy usando RequireJS junto con el plugin de texto para cargar plantillas de manillar dinámicamente.

r.js optimizador compilará la plantilla handlerbar a archivo de texto, que pueden cargarse fácilmente usando RequireJS o incluso ajax

Cuestiones relacionadas