0

TabView からすべてのタブを削除する簡単なコードがありますが、ご覧のとおり、いくつかのタブがまだ残っています。したがって、すべてのタブを適切に削除する方法についてアドバイスが必要です。

遊び場の例http://tinyurl.com/k33r6nz

または、TabView を再作成する方がよいのではないでしょうか。

4

3 に答える 3

0

コードの問題は、繰り返し処理している配列を変更することです。

var pages=container.getChildren();

for(var i=0;i<pages.length;i++){
  container.remove(pages[i]);
}

pages.remove()アクションによって変更される配列への参照です。したがって、pages[0]を削除すると、 pages配列内のすべての要素が左にシフトされます。pages[1]だったものはpages [0]になり、次のラウンドでpages[1]にアクセスすると、以前はpages[2]でした。したがって、他のすべての要素はスキップされます。次のような配列のコピーを作成することをお勧めします

var pages=qx.lang.Array.clone(container.getChildren());
...

そしてそれは動作します。反復ターゲットはループ内で変更されないため、pages.length 式はもはや問題ではありませんこれは、常にページ[0]を削除するよりもクリーンだと思います(質問のコメントで提案されているように)。コードを少し変更したバージョンを次に示します: http://tinyurl.com/lexwry5

TabView の再作成に関しては、通常、既存のウィジェットを破棄して再作成するよりも、既存のウィジェットを保持して、可能であれば再利用する方が適切です。

于 2013-11-04T10:32:39.573 に答える
0

一度に 1 ページずつ削除する代わりに、_removeAll() メソッドを呼び出すことで一度にすべてを削除できます。コードへのリンクhttp://tinyurl.com/pa6ct7r

于 2013-11-28T10:16:55.563 に答える