2012-08-17 45 views
14

在開發期間,我想刷新我的車把模板,如果他們現場保存。如何刷新燼(活)中的模板?

我已經有一個websocket通道,當文件保存時會通知我。此時,我可以通過更新script標記src上的散列來強制重新加載特定模板。

如何通知所有使用此模板的視圖,以便他們需要刷新並強制刷新?

(我如何才能找到他們?我如何觸發刷新?)

+0

什麼影響新TEMPLATENAME,像HTTP: //stackoverflow.com/questions/9999064/ember-js-select-view-template-by-model-type-object-value/10006845#10006845。它可以爲你工作嗎? – 2012-08-17 06:47:41

+0

可能,會給它一個 – 2012-08-17 07:04:09

回答

2

從理論上講,你可以做Ember.View.views.filterProperty('templateName', nameOfUpdatedTemplate).set('template', Ember.TEMPLATES[nameOfUpdatedTemplate])。這應該強制重新渲染。

我還沒有試過這個,也不知道你會遇到什麼樣的邊緣情況,但這是我能想到的最簡單的方法。

+0

星期一會嘗試它的第一件事,謝謝! – 2012-08-18 06:14:23

+0

沒有去...但我確實找到了一招,看到我的回答 – 2012-08-29 08:02:39

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(); 
    } 
    }); 
}) 
+0

對此很好奇 - 你能解釋一下腳本加載器/獲取回調是幹什麼的嗎? – 2013-05-15 07:18:12