1

大家好,在这里发布我的问题后。代码是

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

4

2 回答 2

0

首先 - 你为什么使用容器作为 mainmenuview 而不是 tabpanel?

现在到您的代码:

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

getActiveItem() 不支持索引。activeItem 应该是主菜单视图

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

如果 menupage, homepage, ... 是面板,那么在该面板内您将删除第二个项目(请记住,您在添加项目之前要删除该项目)

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

现在您正在插入已发布的单词

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

在这里,您不是将 Active Item 设置为面板,即您删除和添加项目的地方,而是设置为外部容器内的第一个项目,这不一定是您试图解决的问题。

于 2013-08-03T11:43:36.623 回答
0

我通过使用解决了:

removeInnerAt(index);

正如@TDeBailleul 所说我将其用作:

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

希望它可以帮助某人。

于 2013-08-07T06:38:10.837 回答