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 に答える