Sencha Touch Carousel中的物品消失了

时间:2011-03-24 18:43:33

标签: javascript sencha-touch carousel

我目前正在使用Sencha Touch构建应用程序。我们在包含多个项目的页面上有一个Carousel。单击其他面板上的按钮后,会添加某些项目并将其移除到面板中。

问题:所有问题都按计划进行首次点击,但点击再次点击相同的按钮,功能将停止工作, Carousel显示变为空白,没有任何项目可见。

以下是用于更改轮播itemsCarousel内容的按钮处理程序。该函数将itemPanels[ b.getBadgeText() ]添加到itemsCarousel项。对于前四次左右的点击,这非常有效。在那之后,当我点击一个按钮时,Carousel中的所有项目都会消失,我无法添加或删除任何更多内容,甚至无法从控制台手动调用Carousel。

handler: function(b, e) {
    itemsCarousel.insert(1, itemPanels[ b.getBadgeText() ]);
    itemsCarousel.doLayout(); itemsCarousel.doComponentLayout();
    itemsCarousel.setActiveItem(1);
    itemsCarousel.remove(0, false);
}

我尝试的事情:

  • 通过在0位插入项目来更改订单,设置0有效,然后移除1
  • 在每一行上放置javascript断点,查看轮播空白的位置。有时它会在.insert()语句中出现,有时会出现在.remove()
  • 从控制台手动执行所有操作。
  • 调整autoDestroy电话中的.remove()参数(如上所示)和itemsCarousel声明。

如果您需要更多代码,我可以发布您认为可能相关的任何内容,我不想用多余的代码污染此线程。谢谢你的帮助!

编辑:如果有人知道另一种方法来重现相同的功能,我也会对此持开放态度。我想也许创建一个带有一个项目,一个旋转木马的虚拟持有人容器,并删除整个旋转木马并在按钮点击时重新添加一个全新的(带有新项目)?

1 个答案:

答案 0 :(得分:0)

好吧,我想出了如何使用不同的方法重现功能。

我制作了多个旋转木马,每个旋转木马都包含我想要的面板,然后有一个根面板,只需根据按钮按下设置活动旋转木马。例如,层次结构现在看起来像这样:

rootPanel
{
    carousel[0]
    {
        panel1
        panel2
    }
    carousel[1]
    {
        panel3
        panel4
    }
    ...
}

我执行rootPanel.setActiveItem(x)以显示新的轮播。