请教大家一个问题,我在north区放了几个按钮,想点击不同的按钮,west区就显示相应内容的菜单,开始使用removeAll()将panel的item移除再添加新的元素,但这样导致第二次打开该面板报“getPositionEl().dom.parentNode' 为空或不是对象”这个错误。我想再先把west内的面板销毁,再重新加载一个,却不知这样的代码怎么写,不知道还没有其他的方法来实现,望热心人告知。
贴出你的代码来吧,或者发给我,我帮你看看,yufeng24311@126.com
其实解决你的这个问题有很多种方法,无外乎就是删除再添加,或者是隐藏不显示的展现显示的。
分别给你推荐一个实现:
1、删除再添加方式:
west区域直接就是一个panel,panel中加入显示的内容,点击按钮之后,使用panel.remove(panel.items.items[0]);
panel.add(new 装在新内容的的panel或是container);
panel.doLayout();
panel.items.items[0]---就是你显示的内容的panel或是其他container
2、隐藏显示切换法
west区域的panel使用card 布局,
先将你的各种需要切换显示页面一次加容易到panel中,
点击按钮时,使用panel.getLayout().setActiveItem(index);
index 页面的索引。
试试吧。
使用leftMenu。remove(control);leftMenu。remove(system);
或者写一个for循环remove掉这两个组件,
然后leftMenu。add(childPanel),leftMenu。doLayout()就ok了,
其实你可以这样,把你要去掉的东西放到一个容器里,然后remove这个容器
像这样:
var menuPanel1 = new Panel({
xx : XX---一些属性配置
items : items1
})
leftMenu = new Panel({
items : menuPanel1
});
去掉的时候直接 leftMenu.remove(leftMenu.items.items[0]或者menuPanel1 );试试这样看还会不会出现错误,
但是你这个整体代码结构给我感觉有点不好,不够精炼、巧妙、合理。当然我上面的写法也不是最优的,只是暂时先解决你的问题,个人觉得最好的Ext代码应是嵌套层次少,代码规整,可读性强,有面向对象的思想。