在发布问题here后,大家好。代码是
Ext.define('MyPrj.view.Main', {
extend: 'Ext.Container',
alias: 'widget.mainmenuview',
config: {
activeItem: 1,
width: 710,
margin: '10px auto 0',
layout: {
type: 'hbox'
},
items: [
{
flex: 1,
xtype:'menupage',
cls: 'menuPage',
},
{
flex:2,
xtype:'homepage',
cls: 'homePage',
},
{
flex:1,
xtype:'categorypage',
cls: 'categoryPage',
},
]
}
});
菜单上的itemTap之后我得到了这个结果![结果] [3]
itemTap代码
if(id == '1'){
console.log("Value of Click--"+id);
var publishedword = { xtype: 'publishedword' };
// I am assuming active item is container, here i am getting Container object
var outerContainer = Ext.Viewport.getActiveItem(1);
// removing the second item (index start with 0)
outerContainer.down('panel').removeAt(1);
// replacing second item into publishedword
outerContainer.down('panel').insert(1, publishedword);
outerContainer.getAt(1).setActiveItem(publishedword);
}
我的结果应该是:
![预期结果] [4] 谢谢你的帮助。
答案 0 :(得分:0)
首先 - 为什么使用容器进行mainmenuview而不是tabpanel?
现在你的代码:
var outerContainer = Ext.Viewport.getActiveItem(1);
getActiveItem()不支持索引。 activeItem应该是mainmenuview
outerContainer.down('panel').removeAt(1);
如果menupage,homepage,...是面板,那么在该面板内你将删除第二个项目(记住你在添加项目之前删除该项目)
outerContainer.down('panel').insert(1, publishedword);
现在您正在插入已发布的单词
outerContainer.getAt(1).setActiveItem(publishedword);
在这里,您要将Active Item设置为不在面板中,您删除并添加了项目,而是设置在外部容器内的第一个项目,这不一定是您尝试解决的问题。
答案 1 :(得分:0)
我通过使用:
解决了removeInnerAt(index);
如@TDeBailleul所说in 我用它作为:
panel.removeInnerAt(0);
var publishedword = { xtype: 'publishedword' };
panel.insert(0, publishedword);
希望它对某些人有帮助。