如何在 ext JS/ Sencha 中隐藏选项卡面板
How to hide tab panel in ext JS/ Sencha
我在应用程序中隐藏选项卡面板时遇到问题。
行。我尝试在我的应用程序中做什么..
请看下图
您可以看到有多个选项卡。
如果用户没有管理员提供的访问权限,我想隐藏它。
我只是简单地使用数组将选项卡的面板推送到数组中,就像这样。
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
});
为了管理选项卡访问功能,我创建了一个 return 组件,如果用户有权访问该组件,我将其传递给该函数。更改密码。功能就像
userAccess(this.ChangePassword, 'Change Password');
此 return 如果用户没有更改密码的权限。并简单地更改密码选项卡不会被推送到 companyManageitems 数组中,就像这样
companyManageitems.push(userAccess(this.ChangePassword, 'Change Password'));
'Change Password' 是一个权限名。 userAccess()的第二个参数
问题是:
当用户无权访问该 component/tab 选项卡索引时,函数 return null 会更改其他连续选项卡。所以选项卡的链接不起作用。
方法
我在另一个 view/panel/ 不工作/打开另一个索引号为 3
的标签中编写的代码
this.manageCompany.companyManagePanel.getLayout().setActiveItem(3);
所以,你要做的是:
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);
如果要隐藏 this.Company
处可用的选项卡项和相应的选项卡栏条目,请执行以下操作:
this.Company.hide();
this.Company.tab.hide();
我修改代码如下,
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'));
意思是,我只是将所有 tabPanel 推入数组 companyManageitems[]
像这样按索引隐藏标签,
if (userAccess(this.ChangepasswordPanel, 'Change Password') == null) {
Ext.getCmp('companyTabBar').getTabBar().items.get(3).hide();
}
正在运行....谢谢
我在应用程序中隐藏选项卡面板时遇到问题。 行。我尝试在我的应用程序中做什么.. 请看下图
您可以看到有多个选项卡。 如果用户没有管理员提供的访问权限,我想隐藏它。 我只是简单地使用数组将选项卡的面板推送到数组中,就像这样。
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
});
为了管理选项卡访问功能,我创建了一个 return 组件,如果用户有权访问该组件,我将其传递给该函数。更改密码。功能就像
userAccess(this.ChangePassword, 'Change Password');
此 return 如果用户没有更改密码的权限。并简单地更改密码选项卡不会被推送到 companyManageitems 数组中,就像这样
companyManageitems.push(userAccess(this.ChangePassword, 'Change Password'));
'Change Password' 是一个权限名。 userAccess()的第二个参数
问题是: 当用户无权访问该 component/tab 选项卡索引时,函数 return null 会更改其他连续选项卡。所以选项卡的链接不起作用。 方法 我在另一个 view/panel/ 不工作/打开另一个索引号为 3
的标签中编写的代码this.manageCompany.companyManagePanel.getLayout().setActiveItem(3);
所以,你要做的是:
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);
如果要隐藏 this.Company
处可用的选项卡项和相应的选项卡栏条目,请执行以下操作:
this.Company.hide();
this.Company.tab.hide();
我修改代码如下,
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'));
意思是,我只是将所有 tabPanel 推入数组 companyManageitems[] 像这样按索引隐藏标签,
if (userAccess(this.ChangepasswordPanel, 'Change Password') == null) {
Ext.getCmp('companyTabBar').getTabBar().items.get(3).hide();
}
正在运行....谢谢