面板afterRender使用loader配置

问题描述 投票:1回答:2

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

extjs extjs4.1
2个回答
0
投票

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


0
投票

加载器会触发加载事件,因此您可以使用以下命令监听它:

component.getLoader().on('load', function() {
    // do something
});
© www.soinside.com 2019 - 2024. All rights reserved.