Extjs 4 portlet在加载崩溃时无法正常工作

时间:2012-05-29 14:08:33

标签: extjs4

我在我的应用程序中使用ExtJS门户代码

我想在加载页面时使portlet处于折叠状态。所以我做了类似

的事情
items: [{
                            id: 'portlet-1',
                            title: 'Grid Portlet Texsds',
                            tools: this.getTools(),
                            height:200,
                            **collapsed:true,**
                            autoScroll :true,
                            items: Ext.create('Ext.app.GridPortlet'),
                            listeners: {
                                'close': Ext.bind(this.onPortletClose, this),
                                'endDrag': Ext.bind(this.onPortletDrag, this),
                                'resize' :Ext.bind(this.onPortletResize, this)
                            }
                        }

我已将折叠属性设为true。但正因为如此,当我尝试扩展portlet [页面加载后]时,我可以看到空白的Grid.Plz。参考附图。

有什么问题?我需要刷新什么吗?因为当我将折叠设置为false时,我可以看到网格。

请在此处提出建议。enter image description here

这是getTools:function(){

的代码
{
            type: 'Minimize',
            handler: function(e,target,panelHeader,tool){
                //panelHeader.ownerCt.toggleCollapse();
                if (panelHeader.ownerCt.collapsed)
                {
                    panelHeader.ownerCt.expand();

                }
                else {
                    panelHeader.ownerCt.collapse();
                }
            }
        }

第一次当portlet加载时它处于折叠状态,现在当我点击十字图标而不是[扩展图标的“^”时]我可以看到空白网格。

希望这次我能够很好地解释。

1 个答案:

答案 0 :(得分:0)

我使用Ext JS 4示例门户应用程序并将您的代码(没有星号)添加到portlet-1。它在加载时正确折叠并展开以显示网格。

我认为您发布的代码没有任何问题。也许您已经更改了周围容器的布局或布局属性,这会影响您的portlet。

这是我完整的portal.js:

Ext.define('Ext.app.Portal', {

    extend: 'Ext.container.Viewport',
    //requires: [ 'Ext.diag.layout.ContextItem', 'Ext.diag.layout.Context' ],
    uses: ['Ext.app.PortalPanel', 'Ext.app.PortalColumn', 'Ext.app.GridPortlet', 'Ext.app.ChartPortlet'],

    getTools: function(){
        return [{
            xtype: 'tool',
            type: 'gear',
            handler: function(e, target, panelHeader, tool){
                var portlet = panelHeader.ownerCt;
                portlet.setLoading('Loading...');
                Ext.defer(function() {
                    portlet.setLoading(false);
                }, 2000);
            }
        }];
    },

    initComponent: function(){
        var content = '<div class="portlet-content">'+Ext.example.shortBogusMarkup+'</div>';

        Ext.apply(this, {
            id: 'app-viewport',
            layout: {
                type: 'border',
                padding: '0 5 5 5' // pad the layout from the window edges
            },
            items: [{
                id: 'app-header',
                xtype: 'box',
                region: 'north',
                height: 40,
                html: 'Ext Portal'
            },{
                xtype: 'container',
                region: 'center',
                layout: 'border',
                items: [{
                    id: 'app-options',
                    title: 'Options',
                    region: 'west',
                    animCollapse: true,
                    width: 200,
                    minWidth: 150,
                    maxWidth: 400,
                    split: true,
                    collapsible: true,
                    layout:{
                        type: 'accordion',
                        animate: true
                    },
                    items: [{
                        html: content,
                        title:'Navigation',
                        autoScroll: true,
                        border: false,
                        iconCls: 'nav'
                    },{
                        title:'Settings',
                        html: content,
                        border: false,
                        autoScroll: true,
                        iconCls: 'settings'
                    }]
                },{
                    id: 'app-portal',
                    xtype: 'portalpanel',
                    region: 'center',
                    items: [{
                        id: 'col-1',
                        items: [{
                            id: 'portlet-1',
                            title: 'Grid Portlet',
                            tools: this.getTools(),
                            collapsed: true,
                            height: 200,
                            autoscroll: true,
                            items: Ext.create('Ext.app.GridPortlet'),
                            listeners: {
                                'close': Ext.bind(this.onPortletClose, this)
                            }
                        },{
                            id: 'portlet-2',
                            title: 'Portlet 2',
                            tools: this.getTools(),
                            html: content,
                            listeners: {
                                'close': Ext.bind(this.onPortletClose, this)
                            }
                        }]
                    },{
                        id: 'col-2',
                        items: [{
                            id: 'portlet-3',
                            title: 'Portlet 3',
                            tools: this.getTools(),
                            html: '<div class="portlet-content">'+Ext.example.bogusMarkup+'</div>',
                            listeners: {
                                'close': Ext.bind(this.onPortletClose, this)
                            }
                        }]
                    },{
                        id: 'col-3',
                        items: [{
                            id: 'portlet-4',
                            title: 'Stock Portlet',
                            tools: this.getTools(),
                            items: Ext.create('Ext.app.ChartPortlet'),
                            listeners: {
                                'close': Ext.bind(this.onPortletClose, this)
                            }
                        }]
                    }]
                }]
            }]
        });
        this.callParent(arguments);
    },

    onPortletClose: function(portlet) {
        this.showMsg('"' + portlet.title + '" was removed');
    },

    showMsg: function(msg) {
        var el = Ext.get('app-msg'),
            msgId = Ext.id();

        this.msgId = msgId;
        el.update(msg).show();

        Ext.defer(this.clearMsg, 3000, this, [msgId]);
    },

    clearMsg: function(msgId) {
        if (msgId === this.msgId) {
            Ext.get('app-msg').hide();
        }
    }
});