旧观点出现在背景(Old View appears in Background)

2019-10-18 10:48发布

大家好张贴我的问题后这里 。 此代码是

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]感谢您的帮助。

Answer 1:

首先, - 你为什么要使用容器mainmenuview,而不是一个tabpanel?

现在,你的代码:

   var outerContainer = Ext.Viewport.getActiveItem(1);

getActiveItem()不支持的索引。 activeItem应该是mainmenuview

   outerContainer.down('panel').removeAt(1);

如果menupage,网页,...是面板则该面板中,你会删除第二项(记住,要删除的项目添加一个项目之前)

   outerContainer.down('panel').insert(1, publishedword);

现在您要插入的发布词

   outerContainer.getAt(1).setActiveItem(publishedword);

在这里,你是不是设置活动项目到面板上,在那里你删除和添加的项目,但对outercontainer内的第一个项目,这不neccessarily你在那里试图解决。



Answer 2:

我解决了使用:

removeInnerAt(index);

如说, 在由@TDeBailleul我用它作为:

panel.removeInnerAt(0);
var publishedword = { xtype: 'publishedword' }; 
panel.insert(0, publishedword);

希望它可以帮助一些之一。



文章来源: Old View appears in Background