8

アプリケーションでEmber.jsを使用していますが、ビューのコンテキスト(コントローラー)のプロパティを更新するポイントがありますが、更新の直後に、更新されたフィールドを解析するためのdomを調べるパーサー(MathJax)がありますそれを数学に。ただし、更新が行われている場合でも、mathjaxが更新を検索した後に行われます。私がする必要があるのは、残り火にビューを更新するように強制するか、残り火が更新されるのを待ってから、mathjaxにhtmlを解析するように指示することです。これを達成する方法はありますか?

4

1 に答える 1

17

これはかなり一般的なユースケースです。プロパティの変更が伝播した後に実行するコードを指定するには、オブザーバーを使用します。Emberは、変更が正常に伝播された後、オブザーバーをトリガーします。例えば:

App.MathView = Ember.View.extend({
  controller: null,
  template: Ember.Handlebars.compile("<div>{{myProperty}}</div>"),

  myPropertyDidChange: function() {
    // From here the controller value is changed but DOM has not been updated
    Ember.run.next(this, function() {
      // This code will run when after changes have propagated to the DOM 
      // Call MathJax parser here
      // If needed you can access the view's DOM element via this.$()
      alert("New property value is in dom: "+  this.$().text());
    });
  }.observes('controller.myProperty')
});

Ember.runのEmberManaging-AsynchronyガイドとAPIドキュメントを参照してください: http : //emberjs.com/guides/understanding-ember/managing-asynchrony/ http://emberjs.com/api/classes/Ember.run.html #method_next

于 2013-01-07T03:15:09.390 に答える