我有一个我创建的面板,它有一个加载器配置来加载一个jsp页面。 jsp中有标记,我需要在我的ext控制器中附加一个监听器。我遇到的问题是我在面板上听后续,但是来自jsp页面的dom并不总是渲染/加载但它是一个计时问题(有时候后来者可以找到dom其他时候它不能在此刻)。我尝试在加载器上放置一个监听器来监听负载。但是我有同样的问题,有时dom已经在那时被呈现,有时它没有(再次是它的时间问题)。
Ext.create('panel', {
listeners : {
afterrender: {
fn : function(){
Ext.dom.Query.select('#mydiv');//sometimes this finds it some times it doesn't
}
}
}
loader : {
url : '/my/jsp',
autoLoad : true,
listeners : {
load : {
fn : function(){
Ext.dom.Query.select('#mydiv');//sometimes this finds it some times it doesn't
}
}
}
}
});
在加载jsp并在面板中渲染dom后是否有要监听的事件?我认为在加载器完成之前调用afterrender会将jsp的dom加载到面板中,并且与loader load事件相同。在尝试查询dom并附加监听器之前,我需要确保jsp中的dom在面板中呈现。
答案 0 :(得分:0)
您可以尝试在监听器http://docs.sencha.com/ext-js/4-1/#!/api/Ext.EventManager-method-addListener中使用延迟选项 这不是一个完整的证明方法,但可以为你工作。
答案 1 :(得分:0)
加载程序会触发加载事件,因此您可以使用以下方法监听它:
component.getLoader().on('load', function() {
// do something
});