我有一个边框布局,我必须展开和折叠东部区域的某些视图, 屏幕在开始时工作正常,但是当您单击浏览器的刷新按钮并且东部区域被折叠时,您将东部区域折叠,根据我的理解不应该发生因为extJS代码是从每次刷新时都会开始,因此刷新后东部区域必须可见。
每次用户点击刷新时,都会扩展东区域 我尝试了以下
Ext.getCmp('center_panel').add({
id: 'center_panel_container',
layout: 'border',
defaults: {
'border': true
},
items:[{
id : 'header_panel',
layout: 'fit',
region: 'north',
height: 30,
items: [tbar]
},{
id: 'master_panel',
layout: 'fit',
region: 'center',
width: '60%',
bodyStyle:{"background-color":"white"},
autoScroll: true,
items: [panelLeft,panelLeftSchd,panelLeftStartUp]
}, {
id: 'report_panel',
layout: 'fit',
region: 'east',
width : '40%',
split:true,
autoScroll: true,
items: [panelRight, panelRightStartUp]
}]
});
Ext.getCmp('report_panel').expand(true);
但是我收到以下错误 this.el为null或不是对象。
每当用户每次点击刷新时如何扩展东区域
谢谢,
答案 0 :(得分:3)
这种情况正在发生,因为在您尝试调用其expand方法时,Ext.getCmp('report_panel')
未呈现。这是因为Ext-JS在布局组件时有时会使用setTimeout
。最简单的解决方案是等待渲染事件并从该处理程序调用expand
{
id: 'report_panel',
layout: 'fit',
region: 'east',
width : '40%',
split:true,
autoScroll: true,
items: [panelRight, panelRightStartUp],
listeners: {
render: function(panel) {
panel.expand()
}
}
}
您还可以等待父容器的afterlayout
事件。
答案 1 :(得分:0)
分裂器倾向于记住它的状态,因此在刷新时,分离器将自己设置到它在前一个会话中的位置,以便让它忘记他的状态执行后续操作
{
id: 'report_panel',
layout: 'fit',
region: 'east',
width : '40%',
split:true,
**stateful : false,**
autoScroll: true,
items: [panelRight, panelRightStartUp]
}