frisk_zhou 2009-06-04 12:13
浏览 158
已采纳

Ext的速度问题,如何改进我这段代码。

我用viewport来做系统,在页面里,左边是树treepanel,右边是一个panel.当点击左边的时候,右边改变。见附件。
代码太多,贴主要的如下:[code="java"]var MainPanel = new Ext.Panel(
{ region :'center',
title:'详细信息',
id:'MainPanel',
autoScroll :true,
margins :'0 4 0 0',
contentEl:'mainFrame',
split :true,
border: true
});[/code]
这个是右边的panel的定义。contentEl:'mainFrame',我在jsp页面指定了一个frame ,id='mainFrame'. 以下是树的定义。
[code="java"]var tree=new Ext.tree.TreePanel({

root:root,

width:250 ,
animate :true,
useArrows :true,
autoHeight :true,
autoScroll :true,
border :false

}); //生成一棵树

tree.setRootNode(root);
tree.on('click', treeClick);
function treeClick(node,e){
if(node.isLeaf()){
e.stopEvent();
[color=red]document.getElementById("mainFrame").src=node.attributes.url;[/color]
}
}[/code]

当我点击树的叶子节点的时候 document.getElementById("mainFrame").src=node.attributes.url;我动态改变mainFrame的src,将其定向到一个新的jsp.但是问题是,这个jsp页面必须引入ExtJs的几个核心js包,才可以用Ext的js,而我在viewport定义的页面里已经引入了Extjs的核心js,重复引用,内存会重复加载,所以很不爽,如果每一个页面都要引入相同的 Ext的核心js的话,那用户态痛苦了,我想请问高手有什么办法达到同样的效果,而不用引入Extjs的js,内存里不再重新加载。赐教!

[b]问题补充:[/b]
我用div,怎么搞定
[b]问题补充:[/b]
To peteraml1,提供了思路,我试一下,现在在调试其他的,不错!!
[b]问题补充:[/b]
To peteraml1,但是有个问题是,你这样下一个conPanel 的代码放到那里呢?总不能和那个MainPanel的代码放到一起了。
[b]问题补充:[/b]
我主要是左边的页面也不一定全部用Ext的东西,所以算了,先用着,我们是内部网,所以速度不会太慢。
[b]问题补充:[/b]
出问题了,出大问题了,我按照peteraml1的方法写,但是是这样的(参考别人的)。
[code="java"]
n=MainPanel.getComponent(node.id);
var MainPanel=Ext.getCmp("MainPanel");
var n=Ext.getCmp(node.id);

if(!n){ n =MainPanel.add({ id:node.id, title:node.text, closable:true, autoLoad:{ url:node.attributes.href, scripts:true }
}); } MainPanel.setActiveTab(n);
[/code]
但是总出错,出错在MainPanel.add({}),说啥Ext.fyl(..)为空或不是对象,不知道什么原因.
是我在另外一个demo里是可行的。help!

  • 写回答

5条回答 默认 最新

  • iteye_11706 2009-06-04 14:19
    关注

    主要是看要加载的页面是什么内容,如果加载的是百度这种的页面,似乎只能用iframe,如果加载的是自己写的jsp,那其实可以写在同一张页面里面的。
    [code="java"]
    var tree=new Ext.tree.TreePanel({

    root:root,

    width:250 ,

    animate :true,

    useArrows :true,

    autoHeight :true,

    autoScroll :true,

    border :false

    }); //生成一棵树

    tree.setRootNode(root);

    tree.on('click', treeClick);

    function treeClick(node,e){

    if(node.isLeaf()){

    e.stopEvent();

    if(MainPanel.items && MainPanel.items.getCount()>0){
    MainPanel.remove(MainPanel.items.first());
    }
    var conPanel = new Ext.Panel({
    border : false,
    autoWidth : true,
    autoHeight : true
    });
    MainPanel.add(conPanel);
    MainPanel.doLayout();

                }   
        }  
    

    [/code]

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

报告相同问题?

悬赏问题

  • ¥15 关于超局变量获取查询的问题
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集
  • ¥15 在启动roslaunch时出现如下问题
  • ¥15 汇编语言实现加减法计算器的功能
  • ¥20 关于多单片机模块化的一些问题
  • ¥30 seata使用出现报错,其他服务找不到seata
  • ¥35 引用csv数据文件(4列1800行),通过高斯-赛德尔法拟合曲线,在选取(每五十点取1点)数据,求该数据点的曲率中心。
  • ¥20 程序只发送0X01,串口助手显示不正确,配置看了没有问题115200-8-1-no,如何解决?