extjs4检查窗口';s最后一个子组件afterlayout事件
我被指派创建一个extjs4检查窗口';s最后一个子组件afterlayout事件,layout,extjs,extjs4,window,extjs4.2,Layout,Extjs,Extjs4,Window,Extjs4.2,我被指派创建一个extjs4应用程序,可以在桌面浏览器和移动浏览器上使用。我知道extjs4并不真正适用于移动设备(当然适用于移动设备,但性能差异很大),但我们也支持移动网站的临时使用(未来计划:我们将创建一个Sencha Touch 2版本) 无论如何,我目前正在努力提高应用程序的响应能力。在按钮点击、打开窗口等方面的响应。我想在打开Ext.Window组件时显示一条启动消息。在创建窗口的所有组件之前,此启动消息将一直可见。因此,我试图通过收听窗口的afterlayout事件来实现这一点 在扩
extjs4
应用程序,可以在桌面浏览器和移动浏览器上使用。我知道extjs4并不真正适用于移动设备(当然适用于移动设备,但性能差异很大),但我们也支持移动网站的临时使用(未来计划:我们将创建一个Sencha Touch 2
版本)
无论如何,我目前正在努力提高应用程序的响应能力。在按钮点击、打开窗口等方面的响应。我想在打开Ext.Window
组件时显示一条启动消息。在创建窗口的所有组件之前,此启动消息将一直可见。因此,我试图通过收听窗口的afterlayout
事件来实现这一点
在扩展Ext.Window
的自定义组件上,我有以下代码:
constructor : function() {
var me = this;
...
me.callParent(arguments);
me.on('afterlayout', {
console.log('AFTER LAYOUT');
if (mySplash != null)
mySplash.hide();
}
}
我观察到,afterlayout
事件被多次调用。所以,我已经检查过了。上面写着:
当关联的布局管理器排列此容器中的组件时激发
那么,如何检查窗口/弹出窗口的最后一个afterlayout
事件?我需要这个,如果我已经确定了,我可以在这里调用我的closesplash函数
请帮忙。提前谢谢。你试过了吗?
根据文档,组件完成渲染后afterRender将触发..如果是窗口,则可以使用
show
事件,该事件在窗口准备就绪并显示后立即触发。请注意以下链条:
实例化->渲染->布局->显示
这对所有组件都有效
- show总是触发一次(但由于性能原因,并非所有组件都会触发事件)
- 版面每次版面需要更正某些内容时,都会触发事件。但最初(通常)只有一次。如果这种情况发生多次,则很可能是子级在创建时或在用户交互后触发其父级的布局
- 渲染始终触发一次,直到显式触发重新渲染,但这种情况并不经常发生
{single:true}
应用它),从而再次消除更多飞溅。作为一种解决方法,可以使用,工作示例如下:
想法是在最后一个afterLayout上执行延迟的任务,这听起来像是您需要的事件,而不是
afterrender
是的,但是afterrender
在afterLayout
之前首先被调用,这就是为什么我试图捕捉afterLayout
而不是afterrender
。@JNERC是正确的。我一直在试验这一点,并观察到当调用afterrender
时,并非所有组件都已放置/布局在窗口上。