我在应用程序中隐藏选项卡面板时遇到问题。 好。我试着在我的应用程序中做什么.. 请看下面的图片
你可以看到有多个标签。 如果用户没有管理员提供的访问权限,我想隐藏它。 我只是使用数组来推送数组中的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);
答案 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);