面板afterRender使用loader配置

时间:2013-03-29 16:26:07

标签: extjs extjs4.1

我有一个我创建的面板,它有一个加载器配置来加载一个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在面板中呈现。

2 个答案:

答案 0 :(得分:0)

您可以尝试在监听器http://docs.sencha.com/ext-js/4-1/#!/api/Ext.EventManager-method-addListener中使用延迟选项 这不是一个完整的证明方法,但可以为你工作。

答案 1 :(得分:0)

加载程序会触发加载事件,因此您可以使用以下方法监听它:

component.getLoader().on('load', function() {
    // do something
});