如何从TabView中删除所有标签?

时间:2013-10-28 13:16:05

标签: javascript qooxdoo

我有一个简单的代码可以从TabView中删除所有标签,但是你可以看到一些标签仍在那里。所以我需要建议如何正确删除所有标签。

游乐场示例http://tinyurl.com/k33r6nz

或者更好的是重新制作TabView,不是吗?

3 个答案:

答案 0 :(得分:0)

您的代码的问题在于您修改了正在迭代的数组:

var pages=container.getChildren();

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

pages是对.remove()操作修改的数组的引用。因此,当删除 pages [0] 时, pages 数组中的所有元素都会向左移动。什么是页面[1] 成为页面[0] 并且下一轮访问页面[1] 过去是页[2] 。所以每个其他元素都被跳过了。你最好像

那样创建一个数组副本
var pages=qx.lang.Array.clone(container.getChildren());
...

它有效。 pages.length 表达式不再是问题,因为循环中未修改迭代目标。我认为这比删除 pages [0] (如问题评论中所建议的)更清晰。以下是您的代码的略微修改版本: http://tinyurl.com/lexwry5

至于重新创建TabView,通常最好保留现有的小部件并在可能的情况下重用它们,而不是销毁它们并重新创建它们。

答案 1 :(得分:0)

不是一次删除一个页面,而是可以通过调用_removeAll()方法一次删除所有页面。 链接到代码http://tinyurl.com/pa6ct7r

答案 2 :(得分:0)

可能有点迟了,但由于pages是一个引用,你也可以用一段时间迭代它:

var pages = container.getChildren();
while (pages.length > 0) {
    container.remove(pages[0]);
}