2011-03-24 83 views
0

我目前正在建设使用煎茶触摸应用程序。我们在包含多个项目的页面上有一个Carousel。在单击不同面板上的按钮时,某些项目将被添加并移除到面板。项目在煎茶触摸旋转木马消失

问题:计划用于第一次点击,但点击后点击相同的按钮再次所有作品,功能停止工作,旋转木马显示器变为空白,与没有可见的项目。

以下是按钮的处理程序,用于更改轮播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); 
} 

事我已经尝试:

  • 通过在时隙0插入项改变命令,设置0活性,然后除去1
  • 将javascript断点放在每行上,看看传送带空白处。有时发生在.insert()声明中,有时发生在.remove()
  • 从控制台手动执行所有操作。
  • 调整在.remove()呼叫的autoDestroy参数(如上文所示)和在itemsCarousel声明。

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

编辑:如果有人知道另一种方式来重现相同的功能,我愿意接受这一点。我在想,也许可以创建一个带有一个物品的虚拟持有人容器,一个旋转木马,并删除整个旋转木马,并在点击按钮时重新添加一个全新的项目(使用新项目)?

+0

如果您使用控制台很舒服,确保carousel.items集合包含你认为它应该之前和之后点击。看着控制台中的dom可能也会提供一些线索。 – 2011-03-24 20:23:31

+0

@Jason,谢谢你的回应。我在违规点击之前和之后检查了DOM,一切看起来很正常。即使点击后,DOM显示的carousel.items正确的项目,他们只是不正确显示。 当我最初使用'carousel.removeAll()',然后试图重新添加项目时,我有一些类似的症状,但我转移到此方法,因为它暂时工作。我觉得我接近最新的错误,但我不能钉它! – Ian 2011-03-24 22:15:39

回答

0

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

我建立多个转盘,每片含我想,然后有一个根面板简单地设置基于按钮按压活动圆盘传送带面板。例如,层次结构看起来像现在这样:

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

和我进行rootPanel.setActiveItem(x)显示新的旋转木马。