【问题标题】:Adding PORTAL Inside a TAB PANEL in EXTJS : Using the Portal Demo by EXTJS在 EXTJS 的选项卡面板中添加 PORTAL:使用 EXTJS 的门户演示
【发布时间】:2013-03-19 21:27:20
【问题描述】:

我目前使用的是EXTjs默认的Portal Demo..http://docs.sencha.com/ext-js/4-2/extjs-build/examples/portal/portal.html

谁能告诉我我们是否可以制作一个居中的 TabPanel,它有 3 个标签,每个标签里面都有一个 Portal。

所以在页面加载时,我们位于 Tab 1.. 这本质上是一个门户,我可以在其中拖放东西。 Tab 2 相同。

在 ExtJs 提供的 portal.js 中,我们有用于创建portalpanel 的代码。 一切正常,但现在我必须有一个 Tabpanel 而不是一个门户面板,本质上是一个 tabpanel 中的门户面板。

portalpanel 的显示代码是:

 Ext.define('Ext.app.Portal', {
    extend: 'Ext.container.Viewport',
    uses: ['Ext.app.PortalPanel', 'Ext.app.PortalColumn', 'Ext.app.GridPortlet', 'Ext.app.ChartPortlet'],
    initComponent: function(){
var content = '<div class="portlet-content">'+Ext.s.shortBogusMarkup+'</div>';
        Ext.apply(this, {
            id: 'app-viewport',
            layout: {
                type: 'border',
                padding: '0 5 5 5'
            },
            items: [{
                id: 'app-header',
                xtype: 'box',
                region: 'north',
                height: 40,
                html: '<div></div>'
            },{
                xtype: 'container',
                region: 'center',
                layout: 'border',
                items: [{
                    id: 'app-options',
                    title: 'All Widgets',
                    region: 'west',
                    animCollapse: true,
                    width: 200,
                    minWidth: 150,
                    maxWidth: 400,
                    split: true,
                    collapsible: true,
                    layout: 'accordion',
                    layoutConfig:{
                        animate: true
                    },
                    items: [{
                        html: '<div class="portlet-content">'+Ext.s.example+'</div>',
                        title:'Tables',
                        autoScroll: true,
                        border: false,
                        iconCls: 'nav'
                    },
               {
                    id: 'app-portal',
                    xtype: 'portalpanel',
                    region: 'center',
                    items: [{
                        id: 'col-1',
                        items: [{
                            id: 'portlet-1',
                            title: 'Grid Portlet',
                            tools: this.getTools(),
                            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.smartdashboard.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)
                            }
                        }]
                    }]
                }

如果我们能以某种方式在tabpanel 中创建portalpanel(使用现有的门户示例),有什么想法吗? Please help!!!!

【问题讨论】:

    标签: javascript tabs extjs4 portal


    【解决方案1】:

    你在 ajas 选项卡中使用 ajax 选项卡你的调用 url,在那个 url 中你显示的门户面板就像下面的代码

                var tabs2 = Ext.widget('tabpanel', {
                    renderTo: document.body,
                    activeTab: 0,
                    width: 600,
                    height: 250,
                    plain: true,
                    defaults :{
                        autoScroll: true,
                        bodyPadding: 10
                    },
                    items: [{
                            title: 'Normal Tab',
                            html: "My content was added during construction."
                        },{
                            title: 'Ajax Tab 1',
                            loader: {
                                url: 'ajax1.htm',
                                contentType: 'html',
                                loadMask: true
                            },
                            listeners: {
                                activate: function(tab) {
                                    tab.loader.load();
                                }
                            }
                        },{
                            title: 'Ajax Tab 2',
                            loader: {
                                url: 'ajax2.htm',
                                contentType: 'html',
                                autoLoad: true,
                                params: 'foo=123&bar=abc'
                            }
                        },{
                            title: 'Event Tab',
                            listeners: {
                                activate: function(tab){
                                    setTimeout(function() {
                                        alert(tab.title + ' was activated.');
                                    }, 1);
                                }
                            },
                            html: "I am tab 4's content. I also have an event listener attached."
                        },{
                            title: 'Disabled Tab',
                            disabled: true,
                            html: "Can't see me cause I'm disabled"
                        }
                    ]
                });
    

    【讨论】:

    • 嗨拉维,谢谢你的回答。你能告诉我ajax1.htm等是否在那个html页面中。我将调用另一个内部有portalpanel的JS?我在您提供的代码中没有看到任何门户面板。这就是为什么我很困惑。实际上,我已经在运行中创建了选项卡,并且在这些选项卡中也创建了门户。如果您能为 ajax1.htm 中的门户面板调用提供 some code,我将不胜感激。
    • 嗨第一滴血,首先你给你的总代码,我会告诉你要修改哪个地方,但我被告知你的问题的逻辑,你的门户面板显示在 atabpanel 中,对吗?
    • 嗨拉维,再次感谢。我有 updated my code 。但其实没什么,一开始就是做一个传送门。实际上我想保留docs.sencha.com/ext-js/4-2/extjs-build/examples/portal/… 演示中存在的所有功能,而不是Center 4 Portlet,我只想要Tabs,每个选项卡都应该有这4 个portlet!再次感谢:)
    • 我在单击选项卡时进行 ajax 调用,并调用具有此代码的 JS:Ext.create('Ext.tab.Panel', { width: '50%', height: 500, items: [{ title: 'TabPanel' }] }) 只是为了看看它是否真的加载了.. 所以它现在可以工作了.. 但是如果我必须用门户面板替换它,我该怎么做?任何线索?我的 ajax 调用如下所示:{ title: 'Ajax Tab 2', loader: { url: '/static/javascript/dashboard/tabPortal.js', renderer: 'component', loadMask: true } 另外,我想避免在第一次 ajax 调用后出现重复,因为在第一次调用后创建了一个新的选项卡面板。谢谢。
    • { title: 'Ajax Tab 2', loader: { url: '/static/javascript/dashboard/tabPortal.html', renderer: 'component', loadMask: true } 在那个地方你使用 .js 文件,但你使用 .html 文件你创建一个新的 html 文件你的 tabportal.js 包含在那个 html 文件中,该 html 文件被添加到加载器 url
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多