【问题标题】:How would one refresh templates in ember (live)?如何在 ember (live) 中刷新模板?
【发布时间】:2012-08-17 01:35:38
【问题描述】:

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

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

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

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

【问题讨论】:

标签: javascript ember.js


【解决方案1】:

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

要做到这一点相当棘手:

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])。这应该会强制重新渲染。

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

【讨论】:

    猜你喜欢
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2017-08-14
    • 2011-04-03
    • 2014-07-04
    • 1970-01-01
    相关资源
    最近更新 更多