重新加载轮播项目

时间:2011-06-14 22:39:27

标签: sencha-touch carousel

我需要从我的旋转木马重新加载项目(我点击了一个项目,一个面板被破坏,然后当我尝试返回时,我需要重建旋转木马)

为此,我通过以下方式移除旋转木马的物品:

var len = cards.length;
for(var c = 0; c < len;c++)
this.myCarousel[0].items.remove(cards[0]);

然后我再次设置卡片并再次设置轮播项目:

this.myCarousel[0].items.append(cards);
this.doLayout();

但是在这样做之后,卡片没有设置正确,它们只是相互叠加,没有轮播效果。卡也开始在转盘的工具栏下绘制,而不是从工具栏下面开始。

第一次加载卡片时它完全正常工作(当我从头开始构建旋转木马时),但如果我删除以前的卡片并再次添加它们,它们就无法正常显示,我希望有人可以帮助我。

提前谢谢

2 个答案:

答案 0 :(得分:3)

在旋转木马本身上添加和删除,因为它有方法来执行此操作:

this.myCarousel.removeAll();
var items = [];
for (...) {
   items.push(<item def>);
}
this.myCarousel.add(items);
this.carousel.doLayout(); // Force the carousel to re-render
this.myCarousel.scrollToCard(0); // This will send the user back to the first card

如果用户在您运行上述操作时位于不同的卡上(例如,如果您将其放入方向检查中),那么您应该将它们返回到正确的卡中,如下所示:

var curIndex = this.myCarousel.items.items.indexOf(this.myCarousel.layout.activeItem);
// Now do removing and adding
this.myCarousel.scrollToCard(this.myCarousel.items.items[curIndex]);

您必须使用索引,因为该项目将被删除。

答案 1 :(得分:0)

id应仅用于调试。有更好的方法可以解决组件,而不是使用可能让您遇到麻烦的ID。