在开发期间,我想刷新我的车把模板,如果它们是实时保存的。
我已经有一个 websocket 通道,可以在文件保存时通知我。那时我可以通过更新script
标签上的哈希来强制重新加载特定模板src
。
如何通知所有使用此模板的视图需要刷新并强制刷新?
(如何找到它们?如何触发刷新?)
在开发期间,我想刷新我的车把模板,如果它们是实时保存的。
我已经有一个 websocket 通道,可以在文件保存时通知我。那时我可以通过更新script
标签上的哈希来强制重新加载特定模板src
。
如何通知所有使用此模板的视图需要刷新并强制刷新?
(如何找到它们?如何触发刷新?)
请注意,这适用于简单模板,但不适用于呈现到插座的模板
做到这一点相当棘手:
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();
}
});
})
理论上,你可以做到Ember.View.views.filterProperty('templateName', nameOfUpdatedTemplate).set('template', Ember.TEMPLATES[nameOfUpdatedTemplate])
。那应该强制重新渲染。
我没有尝试过,也不知道你可能会遇到什么边缘情况,但这将是我能想到的最简单的方法。