2012-08-17 13 views
14

Podczas dev chciałbym odświeżyć moje szablony kierownicy, jeśli są one zapisane na żywo.Jak odświeżyć szablony w ember (na żywo)?

Mam już kanał websocket, który powiadamia mnie, gdy plik zapisuje. W tym momencie mogę wymusić przeładowanie określonego szablonu przez aktualizację skrótu na etykiecie scriptsrc.

Jak mogę powiadomić wszystkie widoki korzystające z tego szablonu, które wymagają odświeżenia i wymusić odświeżenie?

(Jak mogę je znaleźć? Jak wyzwolić odświeżania?)

+0

co wpływa nowy TemplateName, jak w http: //stackoverflow.com/questions/9999064/ember-js-select-view-template-by-model-type-object-value/10006845#10006845. Czy to może działać dla ciebie? –

+0

ewentualnie, da mu szansę –

Odpowiedz

2

Teoretycznie można zrobić Ember.View.views.filterProperty('templateName', nameOfUpdatedTemplate).set('template', Ember.TEMPLATES[nameOfUpdatedTemplate]). To powinno wymusić ponowne renderowanie.

Nie próbowałem tego i nie wiem, jakie przypadki brzegowe można napotkać, ale to byłby najprostszy sposób, jaki mogę wymyślić.

+0

spróbuje najpierw poniedziałek, dzięki! –

+0

Nie idę ... ale znalazłem lewę, zobacz moją odpowiedź –

7

uwaga to działa dla prostych szablonów, ale nie dla tych, które są świadczone w placówkach

otrzymuję ten zamiar był dość trudne:

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

ciekawi tego - czy mógłbyś wyjaśnić, co robi program ładujący skrypt/wywołujący wywołanie zwrotne? –