我在我的应用程序中使用 Ember.js,但是有一点我更新了视图上下文(控制器)的属性,但是在更新之后,有一个解析器(MathJax)查看要解析的更新字段的 dom把它变成数学。然而,即使更新正在发生,它也会发生在 mathjax 查找更新之后。我需要做的是强制 ember 更新视图或等待 ember 更新,然后我告诉 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 管理异步指南和 Ember.run 的 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 回答