javascript - 在 ExtJS 中动态更改组件

标签 javascript extjs

我有一个包含 2 个组件的视口(viewport),一个左侧的列表和一个中央窗口,我想根据用户在左侧列表中选择的内容在中央窗口中显示不同的组件,我试图通过动态实现删除和添加组件,但这只是部分成功,我能够删除组件但不能将其添加回去,下面您可以看到我使用的方法示例。

Ext.define('LabSite.view.Viewport', {
    id: "MainViewPort",
    renderTo: Ext.getBody(),
    extend: 'Ext.container.Viewport',
    requires:[
        'Ext.tab.Panel',
        'Ext.layout.container.Border',
        'LabSite.view.Location'
    ],

    layout: {
        type: 'border'
    },
    items: [{
        region: 'west',
        xtype: 'panel',
        title: 'PC lab managment',
        items: [{
            xtype: 'dataview',
            store: Ext.data.StoreManager.lookup('areaStores'),          
            cls: 'feed-list',
            itemSelector: '.feed-list-item',
            overItemCls: 'feed-list-item-hover',
            tpl: '<tpl for="."><div class="feed-list-item">{name}</div></tpl>',
            listeners: {
                selectionchange: function(selmodel, selection) {
                    var xtype=selection[0].data.name.toLowerCase();

                    var centr=Ext.getCmp('centerView');
                    var viewPort=Ext.getCmp('MainViewPort');
                    viewPort.remove(centr);
                    var newcmp=new Ext.Component ({ region: 'center',
                                   id:'centerView',
                                   xtype:'locations'});                                

                    viewPort.add(newcmp);
                    viewPort.doLayout( );

                }           
            }           
        }]
    },
    { region: 'center',
      id:'centerView',
      xtype:'locations'}
    ]   
});

最佳答案

什么M.K.发布是最好的方法,但是我有一个侧面观点。当您动态更新布局时,Ext 会自动为您重新布局,因此 doLayout 调用是多余的并且会增加额外的开销。其次,它也是低效的,因为删除,然后添加将触发布局。假设您使用的是 >= 4.1,您应该这样做:

Ext.suspendLayouts();
center.remove(0);
center.add({
    xtype: 'newcmp'
});
Ext.resumeLayouts(true);

关于javascript - 在 ExtJS 中动态更改组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14384426/

相关文章:

javascript - 是否可以从页面级脚本调用书签中定义的函数?

javascript - 在 D3 图中绕轴旋转矩形

javascript - 高级搜索功能 - 为最终用户提供查询构建器

javascript - 如何使用 XTemplate 在 x 次迭代后添加换行符(换行符)?

javascript - 在 Head Container 达到最小高度后开始主体滚动

javascript - 解码 youtube base.js 密码 2016

javascript - 是否有 Ext.js JavaScript GUI 库的替代品?

javascript - 在 ExtJS Grid 中设置日期过滤器的值

android - Ext未定义错误

javascript - 设置Ext.window.Window提供的禁止编辑字段