1

我有一个导航视图。单击按钮时,我试图通过调用以下函数将另一个视图推送到此导航视图中:

showNewView: function () {
    Ext.Viewport.getActiveItem().push({
        title: 'New View',
        xtype: 'newview'
    });

这个新视图有一个 id some_id

现在,当我多次调用此函数时,我收到以下警告:

[WARN][Ext.Component#constructor] Registering a component with a id (`some_id`)
which has already been used. Please ensure the existing component has been 
destroyed (`Ext.Component#destroy()`.
  • 我知道出现此警告是因为在第二次调用thie函数期间,正在使用相同的id创建一个新视图。并且id必须是唯一的。因此发出警告。

  • 另外,我知道代替id,我可以使用itemId来引用该特定组件。

我想知道的是,如果我继续使用id,如何按照警告中的说明销毁现有组件?

我一开始创建它的方式有什么问题吗? Ext.Viewport.getActiveItem().push({ title: 'New View', xtype: 'newview' });

或者以上是否可以,我是否需要在某个时候销毁该组件?也许在流行音乐活动期间?如果是这样,怎么做?

4

1 回答 1

2

当您多次调用它时,您基本上是在创建 2 个具有相同 id 的视图。

解决方案:

if(!Ext.getCmp('newview')){

Ext.create('Org_name.Basic_name.view.newview');

}

Ext.getCmp('newview').show(); 
  1. 检查 id 是否存在,然后创建视图,然后显示它

  2. 移除 id 属性

于 2014-03-31T08:12:22.973 回答