在所有视图在Ember.js中完全呈现后执行一次代码
类似于文档就绪,但毕竟是余烬视图渲染 我现在正在通过对ApplicationView didInsertElement的覆盖来实现这一点,到目前为止,它似乎还在工作:在所有视图在Ember.js中完全呈现后执行一次代码,ember.js,Ember.js,类似于文档就绪,但毕竟是余烬视图渲染 我现在正在通过对ApplicationView didInsertElement的覆盖来实现这一点,到目前为止,它似乎还在工作: App.ApplicationView = Em.View.extend({ didInsertElement: function() { // Do your magic. } }); 我想知道这是否是准备好Ember文档的正确方法,或者Ember是否对这个简单且非常常见的东西有更原生的支持 didInsert
App.ApplicationView = Em.View.extend({
didInsertElement: function() {
// Do your magic.
}
});
我想知道这是否是准备好Ember文档的正确方法,或者Ember是否对这个简单且非常常见的东西有更原生的支持 didInsertElement是正确的位置,但如果您想完全确保渲染队列已完全刷新,也可以侦听
afterRender
事件,如下所示:
App.ApplicationView = Ember.View.extend({
didInsertElement: function() {
Ember.run.scheduleOnce('afterRender', this, 'processChildElements');
},
processChildElements: function() {
// do here what you want with the DOM
}
});
希望有帮助。通过重新打开基本视图类并将其添加到渲染队列中,可以轻松添加“后期渲染”挂钩
下面是一些代码,向您展示如何:
Ember.View.reopen({
didInsertElement : function() {
this._super();
Ember.run.scheduleOnce('afterRender', this, this.didRenderElement);
},
didRenderElement : function() {
// Override this in your View's
}
});
实际上,ApplicationView似乎不是正确的位置,它适用于第一个请求,但是当您在之后开始呈现其他模板时,钩子不会启动。我在特定视图上定义了didInsertElement,我想在渲染后执行代码,这很好,但如果Ember在每次转换中都有一个通用的钩子用于渲染后的所有视图,那就太好了。@Unless,您提到了
$(文档)。ready
,所以yesApplicationView
适用于第一个请求,对于所有其他视图,我想您也需要这样做。据我所知,在呈现所有视图时没有内置钩子。@对于$(document).ready
,没有等效的钩子,因为这样会产生全局意大利面代码。您应该将jQuery逻辑放入视图中,这最适合任务。这是朝着正确方向迈出的一步。目前,我正在尝试在任何转换或刷新后在页面的呈现上运行javascript。我尝试将jquery块放入willTransition、didTransition以及应用程序路径中的前后模型挂钩,但没有成功。有什么想法吗?
App.ApplicationView = Ember.View.extend({
afterRender: function () {
Ember.run.next(this, function () {
// This will run one time, after the full initial render.
});
}
});