1

タブを追加/削除したい。

メソッドの追加/削除を認識しています。しかし、私の問題は、同じタブをもう一度追加したいということです。再追加されたタブはメモリに保存されます。私はこのようなことができるようにしたい:

function addMyTab(tab) {
    var me = this;
    if (!tab) { // use most recently added tab
        tab = me.tab;
    } else { // update most recently added tab
        me.tab = tab;
    }

    var tabPanel = Ext.ComponentQuery.query(..);
    tabPanel.removeAll();
    tabPanel.add(me.tab);
}

ただし、これは機能しません。次のエラーがスローされます。

キャッチされていない TypeError: null のプロパティ 'addCls' を読み取れません

Extjsフォーラムのスレッドは、これは既に破棄された要素を追加しようとしたことが原因であると示唆しています。

タブを再利用するにはどうすればよいですか?

4

2 に答える 2

3

削除しているパネルを再度追加していると言っているように見えるので、削除手順の後にパネルが破棄されていると推測しています。このようなものがうまくいくはずです:

// initially add the panel
tabPanel.add(myPanel);

// remove it with autoDestroy set to false so Ext doesn't kill your panel
tabPanel.removeAll(false); 

// re-add the panel
tabPanel.add(myPanel);
于 2013-07-22T14:29:46.230 に答える
0

このようなことを試してください:

var currentTab = null;
function addMyTab(tab) {
    var me = this;
    if (tab) { // use most recently added tab
        currentTab = tab;
    } 
    var tabPanel = Ext.ComponentQuery.query(..);
    tabPanel.removeAll();
    tabPanel.add(currentTab );
}

currentTab はグローバル変数です。新しいタブを渡して現在のタブを更新する場合は、現在のタブを新しいタブ it に置き換えます。それ以外の場合は、現在のタブをそのまま使用します。初めて currentTab を使用する前に、必ずいくつかのタブで初期化してください。

于 2013-07-22T06:19:24.197 に答える