2011-06-14 50 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只能用於調試。有更好的方法來解決組件比使用身份證,可以讓你陷入困境。