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