14

在开发期间,我想刷新我的车把模板,如果它们是实时保存的。

我已经有一个 websocket 通道,可以在文件保存时通知我。那时我可以通过更新script标签上的哈希来强制重新加载特定模板src

如何通知所有使用此模板的视图需要刷新并强制刷新?

(如何找到它们?如何触发刷新?)

4

2 回答 2

7

请注意,这适用于简单模板,但不适用于呈现到插座的模板

做到这一点相当棘手:

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();
     }
  });
})
于 2012-08-29T08:11:45.277 回答
2

理论上,你可以做到Ember.View.views.filterProperty('templateName', nameOfUpdatedTemplate).set('template', Ember.TEMPLATES[nameOfUpdatedTemplate])。那应该强制重新渲染。

我没有尝试过,也不知道你可能会遇到什么边缘情况,但这将是我能想到的最简单的方法。

于 2012-08-18T03:44:46.603 回答