2011-05-20 70 views
3

我有一个ExtJS3应用程序,可以从ExtJS4 SVG stuffs受益。在线有一个关于如何使用沙箱模式的example在ExtJS3应用程序中包含ExtJS4组件......但在此示例中,ExtJS4组件是自己浮动的window,因此ExtJS4组件并未真正添加到ExtJS3组件中;他们只是相互独立共存。将ExtJS4组件添加到ExtJS3组件中?

有没有办法在沙箱模式下运行时将ExtJS4组件添加到ExtJS3组件?例如:

var item = Ext4.create("Ext.panel.Panel", { // ExtJS4 
    /* config */ 
}); 
var parent = new Ext.Panel({ // ExtJS3 
    items:[item], 
    /* more config */ 
}); 

如果我尝试这样的事情,我通常会得到这样的错误......

this.container is null (http://localhost:4000/path/ext-4.0.0/builds/ext-all-sandbox-debug.js:27723) 

回答

2

这似乎是一些的ext4组件可以Ext3的组件renderTo DOM元素,用有限的成功:

var ext3Panel = new Ext.Panel({ 
    title:'Ext3' 
}); 
ext3Panel.on('afterrender', function() { 
    var ext4Panel = Ext4.create('Ext.panel.Panel', { 
     title:'Ext4', 
     renderTo:ext3Panel.body.dom, 
    }); 
    ext3Panel.add(ext4Panel); 
}); 

这在Ext3项目中使用Ext4图表时似乎最有用。

引文:

+0

+1的最佳解决方案,没想到这个! – JamesHalsall 2011-05-28 22:58:34

+0

Ext4图表的东西有一些问题,输入赞赏 - http://stackoverflow.com/questions/6455873/using-extjs-4-charts-in-extjs-3-application – OrangeDog 2011-06-23 14:40:21

0

我不认为你正在做的事情是可能的。 ExtJS 4有一个全新的渲染引擎,所以它正在寻找一个不存在的布局容器。

你会好得多从ExtJS的3迁移 - > 4.