Как обновить шаблоны в ember (live)?
Во время dev я хотел бы обновить мои шаблоны руля, если они будут сохранены вживую.
У меня уже есть канал websocket, который уведомляет меня о сохранении файла. В этот момент я могу принудительно перезагрузить конкретный шаблон, обновив хэш в теге script
src
.
Как я могу уведомить обо всех Представлениях, которые используют этот шаблон, чтобы они нуждались в обновлении и принудительно обновили?
(Как я могу их найти?) Как я могу вызвать обновление?)
Ответы
Ответ 1
note, это работает для простых шаблонов, но не для тех, которые отображаются в торговых точках
Получение этого было довольно сложным:
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();
}
});
})
Ответ 2
В теории вы могли бы сделать Ember.View.views.filterProperty('templateName', nameOfUpdatedTemplate).set('template', Ember.TEMPLATES[nameOfUpdatedTemplate])
. Это должно заставить повторную визуализацию.
Я не пробовал это и не знаю, к каким краям вы могли бы столкнуться, но это был бы самый простой подход, о котором я могу думать.