javascript - 如何动态更改 ExtJS 中的组件可见性

标签 javascript extjs extjs6

我有一个像这样带有选项卡面板的视口(viewport)定义

Ext.define('rgpd.view.Viewport', {
    extend: 'Ext.container.Viewport',
    layout: 'border',
    requires: [
        'rgpd.view.entity1.View',
        'rgpd.view.entity2.View',
        'rgpd.view.entity3.View',
        'rgpd.view.entity4.View',
        'rgpd.view.entity5.View',
    ],
    items: [{
        xtype: 'tabpanel',
        id: 'Rgpd',
        region: 'center',
        tabPosition: 'left',
        titleRotation: 0,
        tabRotation: 0,
        padding: 0,
        margin: 0,
        split: true,
        header: {
            layout: {
                align: 'stretchmax'
            },
            title: {
                text: 'RGPD',
                flex: 0
            },
            glyph: 124,
            items: []
        },
        config:{
            collapsible: true,
            hideCollapseTool: false,
            split:false
        },
        items: [
            {
                xtype: 'entity1',
                textAlign: 'right',
                flex: 1,
                hidden: true,
            },
            {
                xtype: 'entity2',
                textAlign: 'right',
                flex: 1,
                hidden: true,
            },
            {
                xtype: 'entity3',
                textAlign: 'right',
                flex: 1,
                hidden: true,
            },
            {
                xtype: 'entity4',
                textAlign: 'right',
                flex: 1,
                hidden: true,
            },
            {
                xtype: 'entity5',
                textAlign: 'right',
                flex: 1,
                hidden: true,
            },
        ]
    }]
});

if (condition) {
    // set entity2 hidden: false
}

如您所见,我的元素已隐藏。我制作了一个身份验证系统,我希望能够将隐藏重置为特定项目(例如实体2)并将隐藏设置为 false。这可能吗?如何实现?我想在我的视口(viewport)定义之后执行此操作

here is an example of what i want. Dynamically setting 2 entities at visible if the condition is ok and have this menu on left side

listeners: {
    boxready: function(){
         if(condition){
              this.down("entity1").setVisible(true);
              this.down("entity2").setVisible(true);
         }
    }
}

添加这段代码会产生 this 。我没有左侧菜单,并且只有一个实体

最佳答案

使用setVisible更改组件可见性的函数

将其添加到tabPanel

listeners: {
    boxready: function(){
         if(condition){
              this.down("entity1").setVisible(true);
              this.down("entity2").setVisible(true);
         }
    }
}

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

相关文章:

javascript - 在 extjs 可编辑网格数据中编辑值时如何删除脏标志?

javascript - Grid 中的 Kendo DropDownList 在选择后显示值

javascript - 如何获取 URL 中第一个查询字符串的值

extjs - Sencha touch 2 - 无法在面板或 TabPanel 内嵌套列表

javascript - 显示消息后,想回到第一屏

javascript - extjs中的分组(数据在分组行的列中)

javascript - ExtJS 6 图表 -- 更改标题颜色

javascript - angularjs firebase用户身份验证服务不与 View 通信

javascript - php 分号分隔,条件有问题

extjs - extjs 的颜色选择器