我正在尝试观察路线更改,以便在渲染后应用一些常见操作.我们的想法是拥有一个类似于onload的功能,但是当我们使用单页应用时,需要在每次路由更改时触发. (可以限定为新视图)
我找到了如何观察currentPath的变化:
App.ApplicationController = Ember.Controller.extend({ currentPathDidChange: function() { prettyPrint() }.observes('currentPath'); });
虽然这在某些情况下效果很好,但是当路由发生变化时会触发它,但仍然要提前应用内容更改,因为它似乎在内容呈现之前附加.
有关实现这一目标的最佳实践的任何想法?
解决方法
您是否尝试过用
Ember.run.schedule
推迟代码?例如,App.ApplicationController = Ember.Controller.extend({ currentPathDidChange: function() { Ember.run.schedule('afterRender',this,function() { prettyPrint(); }); }.observes('currentPath') });