Как обновить шаблоны в 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]). Это должно заставить повторную визуализацию.

Я не пробовал это и не знаю, к каким краям вы могли бы столкнуться, но это был бы самый простой подход, о котором я могу думать.