我正在使用框架ExtJS 3.3.1
管理软件。
我的问题是我想根据调用者使用组件。
我有一个region
中的一个tabpanel
,我想使用此伪代码:
items: [{
region: 'center',
title: 'List of Transmissions',
// PSEUDO CODE START
IF (RECEIVE A CALLER BY THIS COMPONENT) {
id: 'idTab1'
xtype: 'typeA'
}
ELSE IF(RECEIVE A CALLER BY THIS COMPONENT) {
id: 'idTab2'
xtype: 'typeB'
}
// PSEUDO CODE END
}]
有人可以帮我翻译成ExtJS 3.3.1
吗?
谢谢
答案 0 :(得分:0)
您可以将绑定函数用于具有调用者变量的隐藏/显示typeA和typeB。
您可以使用afterrender或boxready侦听器在加载父面板后创建cmp。
我无法创建小提琴,因为我还没有论坛sencha帐户,但是您可以在此https://fiddle.sencha.com/上尝试使用此代码:
var callerVar = false;
new Ext.Panel({
renderTo: document.body,
items: [
{
xtype: 'panel',
html: 'firstPanel',
hidden: callerVar
},
{
xtype: 'panel',
html: 'scndPanel',
hidden: !callerVar
}
]
});
您要决定如何更新callerVar,我不希望这样做。
答案 1 :(得分:0)
感谢Enzo BLACHON和他的想法。
我正在尝试使用layout:'card'
解决并添加/删除ID。根据我的说法,即使它解决了我的问题,也太复杂了,我想问一下是否有一种方式可以使复杂度降低,并且更有用:
id: 'flip_ID',
region: 'center',
layout: 'card',
activeItem: 0,
items: [
{
itemId: 'idTab1',
xtype: 'typeA'
},
{
itemId: 'idTab2',
xtype: 'typeB'
}]
在调用第一个组件时,我添加了以下代码:
var center = Ext.getCmp('flip_ID');
center.add(Ext.ComponentMgr.create({
itemId: 'idTab1',
xtype: 'typeA'
}));
center.getLayout().setActiveItem('idTab1');
center.remove('idTab2', true);
当调用第二个组件时,我添加了以下代码:
var center = Ext.getCmp('flip_ID');
center.add(Ext.ComponentMgr.create({
itemId: 'idTab2',
xtype: 'typeB'
}));
center.getLayout().setActiveItem('idTab2');
center.remove('idTab1', true);