region:'center',  
id:'content-panel',  
xtype: 'tabpanel',  
boder: false,  
activeItem: 0,  
items:[start]     
这是显示详细内容的区域,start是在页面中预先定义好的一个tabpanel
var start = {
id : 'start',
title : '欢迎使用',
layout : 'fit',
bodyStyle : 'padding:25px',
html : '<img src="/wscm/main/pic/bg.jpg"/>'
};
var yylhcl = {  
    id : 'yylhcl',  
    title : '立户处理',  
    closable: true,  
    layout : 'fit',  
    bodyStyle : 'padding:25px',  
    html : '这是立户处理tabpanel '  
};  
var yycblr = {  
    id : 'yycblr',  
    title : '抄表录入',  
    closable: true,  
    layout : 'fit',  
    bodyStyle : 'padding:25px',  
    html : '这是抄表录入tabpanel '  
};  
//其它省略--------- 下面是点击node的事件 
        if (node.leaf && node.id != sn.id){  
            if(Ext.getCmp('content-panel').getItem(node.attributes.url)==null){  
                alert(node.attributes.url+'--'+'未创建');  
                Ext.getCmp('content-panel').add(node.attributes.url).show();  
                }else{  
                alert(node.attributes.url+'--'+'已创建');  
                Ext.getCmp('content-panel').setActiveTab(node.attributes.url);  
                };}}catch(e){}}  
        },  
上述的alert(node.attributes.url+'--'+'未创建')可以显示node.attributes.url是yylhcl,可是这样处理就出错了,为什么呢? 
如果我把Ext.getCmp('content-panel').add(node.attributes.url).show()  改为Ext.getCmp('content-panel').add(yylhcl).show()  这样就是正确的了,可是我想利用node.attributes.url来动态调用已经建好的那些tabpanel 

解决方案 »

  1.   

    我明白了虽然node.attributes.url的返回值与yylhcl是一样的,但是后者是一个预先定义好的对象而前者是一个字符串
    如何我才可以让返回的值与对象一样呢,也就是说返回的值正好是我预定义好的对象.
      

  2.   

    如果我把Ext.getCmp('content-panel').add(node.attributes.url).show() 改为Ext.getCmp('content-panel').add(yylhcl).show() 这样就是正确的了
    node.attributes.url是一个字符串吧
    Ext.getCmp('content-panel').add(yylhcl) yylhcl是一个对象,你看是不是
    你的思路可能不对
      

  3.   

    Ext.getCmp('content-panel').add(Ext.get(node.attributes.url)).show()
      

  4.   

    公布答案:那个自定义的panel是需要new一下的.楼上的办法也不行
    如var yylhcl = new Ext.Panel({
    //var yylhcl = {
    id : 'yylhcl',
    title : '立户处理',
    closable: true,
    layout : 'fit',
    bodyStyle : 'padding:25px',
    html : '这是立户处理tabpanel ',
    // listeners:{
    // 'beforeclose':alert('good')
    // }
    });
    如果这样然后再把这一句Ext.getCmp('content-panel').add(node.attributes.url).show(); 改为Ext.getCmp('content-panel').add(Ext.getCmp(node.attributes.url)).show()就可以了!