1

ナビゲーションビューがあります。ボタンをクリックすると、次の関数を呼び出して、別のビューをこのナビゲーション ビューにプッシュしようとしています。

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

この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()`.
  • 関数が 2 回目に呼び出されたときに、同じidでnewviewが作成されているため、この警告が表示されることを理解しています。また、idは一意である必要があります。したがって、警告。

  • また、 idの代わりに、その特定のコンポーネントを参照する目的に役立つitemIdを使用できることも知っています。

私が知りたいのは、idを使用し続ける場合、警告で説明されているように既存のコンポーネントをどのように破棄するのですか??

そもそも作成方法が間違っているのでしょうか? Ext.Viewport.getActiveItem().push({ title: 'New View', xtype: 'newview' });

または、上記は問題なく、ある時点でコンポーネントを破棄する必要がありますか? たぶんポップイベント中?もしそうなら、どのように?

4

1 に答える 1

2

複数回呼び出すと、基本的に同じIDを持つ2つのビューが作成されます。

ソリューション:

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 に答える