+ -
当前位置:首页 → 问答吧 → 关于ExtJS父页子页之间DOM节点、方法、属性操作问题

关于ExtJS父页子页之间DOM节点、方法、属性操作问题

时间:2011-08-15

来源:互联网

我先描述下界面实现
用的是ExtJS,首先在脚本js1中生成一个TabPanel,而TabPanel里的一个Panel镶嵌了一个JSP(autoLoad方式),jsp引用脚本js2生成gridPanel. 

这里来问题描述,有描述不清楚的地方大家提出,我是个新手菜鸟。
1.这时我要在子页里对父页的TabPanel进行操作,比如说为TabPanel添加一个Panel,这样需要我在子页面中能够获得父页面的TabPanel的对象或者是在父页面中已经写好了的对TabPanel添加Panel的方法。问题1:如何在子页中对父页进行操作,前提是autoLoad(); 

2.在父页中获得子页节点对象,document.getElement.ById("子页节点")会是NULL值,问题2:如何在父页中对子页元素和方法操作。 

3.问题3:由于是自学有很多东西都是似懂非懂,我想问一下,上面提到的JS1和JS2应该写到一个脚本文件里吗,应该怎么注意变量的作用域。

作者: boblisweer   发布时间: 2011-08-15

1楼给自己,希望此贴能给我很大的帮助,最近一直被这些问题困扰。

作者: boblisweer   发布时间: 2011-08-15

来个老鸟给探讨下。。。。这没人教我情何以堪

作者: boblisweer   发布时间: 2011-08-15

针对楼主的问题 先说下解决方式 再说下个人的几点意见:
1、如果是嵌入的 子页面要访问父页面的对象 top.Ext.getCmp('tabpanel的id')
2、为什么是null 因为Ext的渲染的问题 它实际上渲染完了之后是一系列的div嵌套+样式修改 在你代码中定义的id 渲染完之后被Ext的东西在这个id上加了后缀 所以你用原始的dom操作是拿不到的 只能通过Ext.getCmp('组件id')的方式得到 只要该组件没有被destroy 就得的到
3、可以写到一个里边

建议:
其实楼主上边的操作 完全没有必要做嵌套jsp的方式实现 
相反 可以先构造一个Panel 里边放上你的内容 表格也好 其他组件也好 然后add到TabPanel中 最后一块渲染即可 效果和你的嵌套页面的效果是一样的
这样 就不存在父子页面的关系 也简化了操作的复杂性

作者: fanchuanzhidu   发布时间: 2011-08-15