2012-08-17 6 views
14

Durante el desarrollo, me gustaría actualizar las plantillas de mi manillar si se guardan en vivo.¿Cómo se actualizarían las plantillas en Ember (en vivo)?

Ya tengo un canal websocket que me notifica cuando se guarda un archivo. En ese momento, puedo forzar una recarga de la plantilla particular al actualizar un hash en la etiqueta scriptsrc.

¿Cómo puedo notificar a todas las Vistas que usan esta plantilla que necesitan actualizar y forzar una actualización?

(¿Cómo puedo encontrarlos? ¿Cómo desencadenar una actualización?)

+0

¿qué pasa que afecta a una nueva nombre_plantilla, como en http: //stackoverflow.com/questions/9999064/ember-js-select-view-template-by-model-type-object-value/10006845#10006845. Podría funcionar para usted? –

+0

posiblemente, le dará una oportunidad –

Respuesta

2

En teoría, se podría hacer Ember.View.views.filterProperty('templateName', nameOfUpdatedTemplate).set('template', Ember.TEMPLATES[nameOfUpdatedTemplate]). Eso debería forzar una nueva representación.

No he intentado esto, y no sé qué casos extremos se pueden encontrar, pero ese sería el enfoque más simple que se me ocurre.

+0

lo intentaré a primera hora del lunes, ¡gracias! –

+0

no ir ... pero encontré un truco, vea mi respuesta –

7

nota esto funciona para plantillas simples, pero no para los que se representan en los enchufes

dar Este curso fue bastante difícil:

var js = "template.js"; 
var templateName = "template"; 

Ember.TEMPLATES["empty"] = Handlebars.compile("") 

// script loaders are the simplest way of getting a callback 
$LAB.script(js).wait(function(){ 
    $.each(Ember.View.views,function(){ 
    if(this.get('templateName')==templateName){ 
     this.set('templateName','empty'); 
     this.rerender(); 
     this.set('templateName',templateName); 
     this.rerender(); 
    } 
    }); 
}) 
+0

curiosidad sobre esto - ¿podría explicar lo que está haciendo el gestor de scripts/obtener la devolución de llamada? –

Cuestiones relacionadas