Ext动态控制tab菜单置灰

本文介绍了如何在使用Ext.js构建的前端界面中实现保护组功能。当未配置保护组时,保护倒换等操作的tab菜单将被置灰,不可操作;而配置了保护组后,这些操作将恢复正常。这一功能通过获取特定页面的tab菜单并设置其disabled属性来实现。代码示例展示了如何根据板卡类型动态判断和控制tab菜单的禁用状态,确保功能的正确执行。
摘要由CSDN通过智能技术生成
  • 项目描述:
    项目前端界面用Ext.js实现的,今天要开发一个保护组的功能。要求:没有配置保护组时,保护倒换等操作tab置灰,不让操作。配置了保护组后,保护倒换等操作tab可以正常操作。

  • 没有保护组时,保护倒换等操作tab置灰,如图所示:
    在这里插入图片描述

  • 创建了保护组后,保护倒换等操作tab可以正常操作,如图所示:
    在这里插入图片描述

  • 菜单说明:172.16.61.63网元下面有OPCOM100-CPM6DX2、OPCOM100-CPM12D等板卡。CPM6DX2与CPM12D是两种不同的板卡类型,他们的保护倒换等操作tab菜单配置的对应页面不同。
    在这里插入图片描述

  • CPM6DX2菜单配置:
    在这里插入图片描述

  • CPM12D菜单配置:在这里插入图片描述

  • 注意:虽然CPM6DX2和CPM12D这两种板卡的“保护倒换APS”菜单对应的页面都是:Admin.view.ems.otn.emsBasicMgt.protectionSwitching.mainView.view
    但是name属性的值是不一样的。CPM6DX2叫cpmx2ProtectionSwitchingAPS,CPM12D叫protectionSwitchingAPS
    在这里插入图片描述

  • 实现原理:
    获取“保护倒换APS”这个菜单对应的页面,然后获取其所有的tab菜单,设置tab的disabled属性即可。
    CPM6DX2和CPM12D这两种板卡的“保护倒换APS”菜单对应的页面都是:
    Admin.view.ems.otn.emsBasicMgt.protectionSwitching.mainView.view
    页面的xtype属性为:otnProtectionSwitchingView
    获取otnProtectionSwitchingView页面的代码为:
    let tabPanelArr = Ext.ComponentQuery.query("otnProtectionSwitchingView");
    tabPanelArr 是一个数组,CPM6DX2和CPM12D加载后各有一条数据。
    我刚开始用:let tabPanel = Ext.ComponentQuery.query("otnProtectionSwitchingView")[0];
    导致只有一张板卡的tab菜单置灰生效。

  • Ext.ComponentQuery.query(“otnProtectionSwitchingView”);数组如图所示:
    在这里插入图片描述

  • 在保护组配置的viewController.js的onRefresh方法和onSelectionchange 方法中调用isDisabledTopTab()方法。

  • 控制tab菜单置灰和放开的方法如下:

    //如果该板卡没有创建保护组置灰所有tab
    isDisabledTopTab() {
        let me = this,
            v = me.view,
            vm = v.viewModel,
            neId = APP.EMS.neId,
            cardId = APP.EMS.selectedCardId,
            fixedCardTypeId = APP.EMS.selectedFixedCardTypeId;
    
        let url = '/tiap_ems_basic_mgt/tiap_ems_basic_mgt/v1/protectgroup/queryPage',
            method = 'POST',
            params = {
                "neId": neId,
                "cardId": cardId
            },
            successFn = function (r) {
                //非CPM6DX2菜单name值
                let viewModelKey = 'protectionSwitchingAPS';
                //OPCOM100-SA2、OPCOM100-SA3、OPCOM100-SA5的OPCOM100-CPM6DX2
                if(fixedCardTypeId == '8170000000243' || fixedCardTypeId == '8180000000243' || fixedCardTypeId == '8190000000243') {
                    //CPM6DX2菜单name值
                    viewModelKey = 'cpmx2ProtectionSwitchingAPS';
                }
    
                let tabPanelArr = Ext.ComponentQuery.query("otnProtectionSwitchingView");
                let tabPanel = tabPanelArr[0];//默认取第一个
                for (let i = 0; i < tabPanelArr.length; i++) {
                    let tabViewModelKey = tabPanelArr[i].viewModelKey;
                    if(tabViewModelKey == viewModelKey){
                        tabPanel = tabPanelArr[i];
                        break;
                    }
                }
    
                let tabs = tabPanel.query('tab');
                if(r.total == 0){
                    let num = 1;
                    for (let i of tabs) {
                        if(num != 1){
                            i.setDisabled(true);
                        }
                        num ++;
                    }
                }else{
                    for (let i of tabs) {
                        i.setDisabled(false);
                    }
                }
            };
        CommonUtils.onCommonAjax(url, method, params, successFn);
    }
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值