0

我目前正在使用 Sencha Touch 构建一个应用程序。我们在包含多个项目的页面上有一个特定的轮播。单击不同面板上的按钮后,某些项目会添加到面板中或从面板中删除。

问题:第一次单击时一切正常,但再次单击相同按钮时,功能停止工作,轮播显示变为空白,没有任何项目可见。

下面是更改轮播内容的按钮的处理程序itemsCarousel。该函数添加itemPanels[ b.getBadgeText() ]itemsCarousel的项目。对于前四次左右的点击,效果很好。在那之后,当我单击一个按钮时,轮播中的所有项目都消失了,我无法添加或删除更多内容,即使从控制台手动调用轮播也是如此。

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

我尝试过的事情:

  • 通过在 slot 插入项目0,设置为0active,然后删除来更改顺序1
  • 在每一行上放置 javascript 断点,查看轮播在何处变为空白。有时它出现在.insert()语句中,有时出现在.remove().
  • 从控制台手动执行所有这些操作。
  • 调整调用autoDestroy中的参数.remove()(如上所示)和itemsCarousel.

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

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

4

1 回答 1

0

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

我构建了多个轮播,每个都包含我想要的面板,然后有一个根面板,它根据按钮按下简单地设置活动轮播。例如,层次结构现在如下所示:

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

我表演rootPanel.setActiveItem(x)以展示新的轮播。

于 2011-03-28T23:42:35.190 回答