ruby07 2011-01-12 18:18
浏览 406
已采纳

使用TabPanel时,如果两个页面存在相同的id。

我左边是一颗tree,右边是TabPanel。当点击一个结点 A,autoload一个页面 A.jsp 在TabPanel中。再点击另一个结点 B,autoload另一个页面 B.jsp 在TabPanel中。这时就存在问题了,如果我 A 页面和 B 页面同时存在

,那么,如果我先点击结点 A,页面 A.jsp 正常显示,再结点 B,页面 B.jsp 不能显示,反之相反。

如果将 B 页面的

,改为
,就能是正常的。
我知道 id 是唯一的,不能相同。但 A.jsp 和 B.jsp 是TabPanel 中两个不同的页面,为什么是存在这个问题?

希望大家帮忙!!
谢了!

  • 写回答

3条回答 默认 最新

  • 御风24311 2011-01-14 17:20
    关注

    如果采用A.jsp中这种定义一个

    ---这个地方的id是必须要写的,但是一定要唯一,不然显示会有冲突,而且A.jsp不能在浏览器重同时被载入两次,这里说的意思是在下一次载入A.jsp之前先前的A.jsp所在的页面必须先remove掉。不知道你是否明白,还是那句话就是为了避免dom节点id冲突。

    Ext组件的id不设定的话是ext渲染的时候自动生成的,一般都是什么 ext-com-1321
    之类的字符串,不用去管这些。你要这个Ext组件,有两种方式:

    1、该组件已经设定了Id时,使用Ext.getCmp(组件id)---(不建议使用)
    2、没有设定id时, 将这个组件的引用传递给你需要使用的他的对象中去。
    如 var panel1 = new Ext.Panel();
    你可以将这个panel传递给你要用它的对象,
    如 var panel2 = new Ext.MyPanel({panel1 : panel1});
    MyPanel定义如下,是一个继承Ext.Panel的一个自定义panel组件。我们组开发写ext代码的一个规范格式,送给你参考一下。
    MyPanel = function(config){
    Ext.apply(this,config);//将config中的属性赋值给MyPanel

    你现在就可以在这个panel中通过 this.panel1 来操作panel1了;
    MyPanel.supperclass.constructor.call(this,{*一些配置与定义*});
    }
    Ext.extend(MyPanel,Ext.Panel,,{*一些配置与定义*});

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料