我使用onDisclosure事件创建了一个列表。当我点击onDisclosure图标,我这样做:Sencha触控面罩公开
this.getMain().push({
xtype: 'newpanel',
title: record.info(),
data: record.getData()
});
但由于一个事实,即“newpanel”是非常大的,它需要6/7秒,以显示我的面板。
因此,我想补充面具是这样的:
Ext.Viewport.setMasked({
xtype: 'loadmask',
message: 'Loading...'
});
this.getMain().push({
xtype: 'newpanel',
title: record.info(),
data: record.getData()
});
Ext.Viewport.setMasked(false);
但是由于JavaScript是异步的,这行代码犯规指定的顺序上运行。首先,他推动新面板,而不是等待6/7秒,然后他将面具设置为真实,立即变为假,因此我们看不到面具。
有人对如何解决这种情况有任何想法吗?
谢谢。
感谢您的回答,rixo !我的新面板不仅仅是一个面板,而是一个带有6个标签的Tabpabel,可调用6个新面板。我尝试过你提到的实现,但是当我做 “this.getMain()。push” 我得到以下错误:“Uncaught TypeError:Object [object global] has no method'getMain'” 因为超时功能内的“this”与超时功能外的“this”不同。我试图使用“this.getParent()”或“this.up()”,但没有效果... – Anonymous
你说得对,对不起。我使用闭包修复了这个例子。或者,您可以使用'Ext.Function.defer'来管理范围,而不是'setTimeout'。 – rixo
是的,我认为我的大脑被冻结了,当然我必须这样做!非常感谢,现在完美! – Anonymous