运行 extjs 中每个选项卡中的相同代码

Run same code in each tab in extjs

我希望在选项卡式面板的每个选项卡中都有相同的表单面板。有没有一种方法可以使每个选项卡的相同代码 运行 而不必复制项目列表中的代码,因为那是多余的。

这是一种方法 -

您通常会定义一个选项卡面板,并将多个面板作为项目数组提供。对于项目内的每个面板,提供您在下面定义的相同面板容器作为项目。

{
    xtype: 'tabpanel',
    itemId: 'myTabPanel',
    activeTab: 0,
    plain: true,
    items: [{
        xtype: 'panel',
        itemId: 'tab1',
        layout: 'fit',
        title: 'Strategies',
        items: [{
            xtype: 'myTabContainer'
        }],
        tabConfig: {
            xtype: 'tab',
            closable: false
        }
    }, {
        xtype: 'panel',
        itemId: 'tab2',
        layout: 'fit',
        title: 'Action Sets',
        items: [{
            xtype: 'myTabContainer'
        }]
    }],
    listeners: {
        tabchange: 'tabChangeListener' // define this and handle the actions for your tab change event
    }
}

这里是选项卡 container/content 的示例定义。您可以注意到,我在上面的每个选项卡中使用此容器的别名 "myTabContainer" 作为 xtype。这将确保相同的视图链接到两个选项卡。

Ext.define('MyTabContainer', {
            extend: 'Ext.panel.Panel',
            alias: 'widget.myTabContainer',

            requires: [
                // give all required classes
            ],

            viewModel: {
                type: 'dfstrategiesmaincontainer'
            },
            itemId: 'tabContent',
            layout: 'border'

            // Define all other required items and contents
        }

定义一个表单并将该表单设置为每个选项卡中的一个项目。

//Define the form
Ext.define('App.view.MyForm', {
        extend:'Ext.form.Panel',  
        alias: 'widget.myform',  
        bodyPadding:10,
        items: [....]        
});

//Use the form as an item in each tab
Ext.create('Ext.tab.Panel', {
    width: 400,
    height: 400,
    renderTo: document.body,
    items: [{
        title: 'Tab1',
        xtype: 'myform'
    }, {
        title: 'Tab2',
        xtype: 'myform'
    }]
});