旧视图出现在背景中

时间:2013-08-01 06:51:33

标签: layout sencha-touch-2

在发布问题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] 谢谢你的帮助。

2 个答案:

答案 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);

希望它对某些人有帮助。