如何在ext JS / Sencha

时间:2017-04-11 11:12:29

标签: javascript extjs sencha-touch sencha-architect sencha-touch-2.1

我在应用程序中隐藏选项卡面板时遇到问题。 好。我试着在我的应用程序中做什么.. 请看下面的图片

enter image description here

你可以看到有多个标签。 如果用户没有管理员提供的访问权限,我想隐藏它。 我只是使用数组来推送数组中的tab面板,就像这样。

 companyManageitems.push(this.Company);
 companyManageitems.push(this.User);
 companyManageitems.push(this.ChangePassword);
 companyManageitems.push(this.Group); //etc

这个数组我传递到另一个标签面板的项目配置,像这样。

     this.companyManagePanel = new Ext.tab.Panel({
            cls: 'p-tab-panel',
            activeTab: 0,
            items:companyManageitems
           });

管理选项卡访问功能我创建了一个函数,如果用户可以访问该组件,则返回我传递给该函数的组件。更改密码。功能就像

userAccess(this.ChangePassword, 'Change Password');
如果用户没有更改密码的权限,则返回

。并且只是更改密码选项卡不会被推入 companyManageitems 数组,就像这样

 companyManageitems.push(userAccess(this.ChangePassword, 'Change Password'));

'更改密码'是一个权限名称。 userAccess()的第二个参数

问题是: 当函数返回null时,如果用户无权访问该组件/选项卡选项卡索引,则更改其他连续选项卡。因此标签的链接无法解决。 手段 这段代码我写在另一个视图/面板/不工作/打开另一个获得索引3的选项卡

this.manageCompany.companyManagePanel.getLayout().setActiveItem(3);

3 个答案:

答案 0 :(得分:4)

如果要隐藏this.Company处可用的标签项和相应的标签栏条目,请执行以下操作:

this.Company.hide();
this.Company.tab.hide();

答案 1 :(得分:1)

我修改后的代码如下,

var companyManageitems = [];
        companyManageitems.push(this.companytab);
        companyManageitems.push(this.Usertab);
        companyManageitems.push(this.roletab); 

而不是:

companyManageitems.push(userAccess(this.this.companytab, 'Company'));
companyManageitems.push(userAccess(this.Usertab, 'Users'));
companyManageitems.push(userAccess(tthis.roletab, 'role'));

表示,我只是推送了数组 companyManageitems [] 中的所有tabPanel 并按照这样的索引隐藏了标签

 if (userAccess(this.ChangepasswordPanel, 'Change Password') == null) {
            Ext.getCmp('companyTabBar').getTabBar().items.get(3).hide();
        }

它的工作......谢谢

答案 2 :(得分:0)

所以,你要做的是以下几点:

this.manageCompany.companyManagePanel.getLayout().setActiveItem(3);

SetActiveItem确实允许您使用索引,但它也允许您使用特定项目或itemId。

所以,你想要做的可能是以下几点:

if(this.manageCompany.companyManagePanel.items.indexOf(this.ChangePassword)>-1 && hasUserAccess('Change Password'))
   this.manageCompany.companyManagePanel.getLayout().setActiveItem(this.ChangePassword);