如何在Ember.js中手动更新视图?

Aka*_*ash 8 javascript ember.js

我在我的应用程序中使用Ember.js,但有一点我更新了视图的上下文(控制器)的属性,但是在更新之后有一个解析器(MathJax)查看dom以获取要更新的字段进行解析把它变成数学.然而,即使更新正在进行,它也会在mathjax查找更新之后发生.在我告诉mathjax解析html之前,我需要做的是强制ember更新视图或等待ember更新.有没有办法实现这个目标?

Mik*_*tti 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')
});
Run Code Online (Sandbox Code Playgroud)

请参阅Ember.run的Ember Managing-Asynchrony Guide和API docs:http://emberjs.com/guides/understanding-ember/managing-asynchrony/ http://emberjs.com/api/classes/Ember.run.html #method_next