2011-06-14 51 views
0

我需要从我的旋转木马加载项(我点击了一个项目,一个面板被摧毁,然后当我尝试回去,我需要重建转盘)刷新旋转木马项目

对于这个我通过做去除转盘的项目:

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(); 

但是这样做之后,该卡不得到正确​​设置,在他们刚G等写在彼此的顶部,没有传送带效果完成。此外,卡片开始在旋转木马的工具栏下绘制,而不是从工具栏下方开始。

第一次加载卡片时,它完美地工作(当我从头开始构建传送带时),但是如果我删除以前的卡片并重新添加它们,它们将无法正确显示,我希望有人可以提供帮助我。

预先感谢您

+0

我发现我遇到的问题是由于某种原因造成的,视图在其他地方遭到破坏,这就是传送带不工作的原因。但我仍然很感兴趣,为什么我不能调用this.myCarousel.removeAll()或this.myCarousel.doLayout();也许这是因为我通过添加this.add(this.myCarousel)来添加旋转木马,而不是在创建视图时直接将旋转木马添加为项目。 – marimaf 2011-06-17 17:38:29

回答

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]); 

你必须使用索引的项目将被删除。

+0

它说myCarousel没有任何叫做removeAll或doLayout的函数。注意上面,我必须把myCarousel当成一个对象数组,但即使我这样做.myCarousel [0] .doLayout()或removeAll()它说myCarousel [0]没有这些函数 – marimaf 2011-06-17 15:12:09

+0

Carousel has removeAll和doLayout(检查API ref)。听起来就像你没有参考渲染轮播,只是最初的配置对象。您需要渲染旋转木马,然后获取该参考。你可以通过多种方式来做到这一点,但是你可以使用一个追随者来抓取渲染的轮播。 – 2011-06-21 01:10:12

+0

我知道旋转木马应该有这些功能,但我不明白为什么我不能打电话给他们。旋转木马如果现在工作的很好。 items.remove(cards [i])毕竟工作。但我仍然需要调用this.myCarousel [0]。谢谢你的帮助。 – marimaf 2011-06-21 01:20:56

0

id只能用于调试。有更好的方法来解决组件比使用身份证,可以让你陷入困境。