1

我有一个我创建的面板,其中包含加载器配置以将 jsp 页面加载到其中。jsp 中有标记,我需要在我的 ext 控制器中附加一个侦听器。我遇到的问题是我在面板上收听 afterrender,但是来自 jsp 页面的 dom 并不总是被渲染/加载,但它是一个时间问题(有时 afterrender 可以找到 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后是否有事件要监听?我认为在加载程序完成将 jsp 的 dom 加载到面板之前调用 afterrender 并且与加载程序加载事件相同。在尝试查询 dom 并附加侦听器之前,我需要确保 jsp 中的 dom 在面板中呈现。

4

2 回答 2

0

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

component.getLoader().on('load', function() {
    // do something
});
于 2013-03-30T22:23:08.970 回答
0

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

于 2013-03-30T18:25:53.643 回答