我在main.jsp中采用ext的viewport布局。代码:var viewport = Ext.create('Ext.container.Viewport', {
        layout: 'border',
        defaults: {
            collapsible: true,
            bodyStyle: 'padding: 10px'
        },
        items: [logoPanel, treePanel, mainPanel, copyrightPanel]       
    });通过点击treePanel中的树节点,centerPanel中创建对应的页面。var treePanel= Ext.create('Ext.tree.Panel', {
        title: ‘功能模块’,
        displayField: 'name',
        region: 'west',
        id: 'moduleList',
        width: '16%',
        autoScroll: true,
        store: treeStore,
        rootVisible: false,
        listeners: {
            itemclick: function(view, record, item, index, e, eOpts) {
                var data = record.raw.extData;
                var global = data.global;
                var entry = data.entry;
                var title = data.name;
                if (entry != null && /^http/.test(entry)) {
                    var html = "<iframe id='ifm' src='" + entry + "'></iframe>";
                    updateMainPanel(html, title);
                } 
}
});
var mainPanel= Ext.create('Ext.panel.Panel', {
        title: 'center',
        region: 'center',
        width: '84%',
        bodyCls: 'bg',
        autoScroll: true,
        html: indexContent()       //进入系统主页面
    });mainPanel中使用了iframe。
现在我点击树的模块管理节点。在mainPanel显示模块管理页面,其中有个功能是添加功能模块,成功添加一个功能模块后需要更新treePanel中的树节点。该怎么实现呢?如何得到treePanel啊???Ext中跨域更新数据

解决方案 »

  1.   

    从iframe中更新父页treepanel?如果是跨域无解不是可以给treepanel配置id,然后Ext.getCmp('treeid')得到treepanel,然后进行你的操作
      

  2.   

    是跨域,Ext.getCmp('treeid')得到的是undefined。
    应该有人跟我一样碰到这个问题的吧,希望有解决办法啊!!
      

  3.   

    直接刷页面吧,绕开跨域限制实现跨域事件非常麻烦,
    给window.parent.location重新赋值刷新父页面,跨域赋值location是有效的
      

  4.   


    非常感谢你,根据你的提示,今天又花了将近一天时间,问题终于解决了!我是这样的:
     
    window.top.Ext.getCmp('moduleList').store.reload();对于以上两位的提示再次表示感谢、感激啊!!我初学ext,知识不够用。