1

extjs 门户示例中的动态列。

我想在 extjs 门户示例中动态插入列——特别是我想嵌套它们,问题是我能够动态添加列但不能在其中删除一个 portlet,但是如果我手动嵌套列(即如果它们是已经存在并且未在运行时定义)然后一切正常,即我可以将portlet放入其中。

任何人都可以帮忙吗?

这是一些相关的代码:

基本声明:

Ext.define('Ext.app.Portal', {
id: 'parentPortal',
    extend: 'Ext.container.Viewport',
    requires: ['Ext.app.PortalPanel', 'Ext.app.PortalColumn', 'Ext.app.GridPortlet', 'Ext.app.ChartPortlet'],
initComponent: function(){
    items: [{                        
                        xtype: 'portalpanel',
                        id:'threecolumn',
                        region: 'center',                        
                        items: [{
                            id: 'col-1',
                            width: 200,
                            childAnchor: '50% 50%' ,
                            items: [
                                {
                                    xtype: 'portalpanel',
                                    items: [
                                        {
                                            id: 'col-4',
                                            minHeight:200
                                        }

                                    ],                                    
                                }
                            ]
                        },{
                            id: 'col-2',
                            items: [
                                {
                                    xtype: 'portalpanel',
                                    items: [
                                        {
                                            id: 'col-5',
                                            minHeight:200
                                        }

                                    ],                                    
                                }
                            ]
                        },{
                            id: 'col-3'
                        }]
                    }]
}
}

动态栏:

Ext.create('Ext.app.PortalPanel', {            
              xtype: 'portalpanel',              
        });
}
4

1 回答 1

2

请添加监听器

listeners: {
                render: function() {
                    var panel = this;
                    setTimeout( function() {
                    var parent = panel.up('portalpanel');
                    var bb = Ext.ComponentQuery.query('#threecolumn')[0]
                    console.log( bb == parent );
                    parent.dd.unreg();
                    parent.dd = Ext.create('Ext.app.PortalDropZone', parent, parent.dropConfig);
                    bb.dd.unreg();
                    bb.dd = Ext.create('Ext.app.PortalDropZone', bb, bb.dropConfig);        
                    console.log(panel);
                    console.log(parent);
                    }, 500);                        
                }
              }
于 2013-09-23T10:13:39.977 回答