2010-03-05 63 views
2

我創建手風琴這樣的:ExtJS的:禁止手風琴動畫

layout:'accordion', 
layoutConfig:{ 
      animate:true 
} 

然後我通過添加添加元素()方法,然後用的doLayout(重新渲染),並設置了activeItem:

navigation_panel.getComponent(1).expand(false); 

我使用false參數調用expand()方法,但它仍然使動畫過渡,所以它從主佈局設置並忽略我發送到expand()。如何解決這個問題呢?

回答

5

當您在本面板展開某項發生了兩件事:1。 舊的活動項目是摺疊 2.新的活動項目展開

舊的活動項目的坍塌是由處理手風琴佈局,並在「beforeexpand」事件期間發生。查看源代碼,我發現手風琴佈局調用了 var ai = this.activeItem; ai.collapse(this.animate)

因此,舊有效項目的崩潰動畫完全由手風琴佈局的「animate」屬性決定。出於這些目的,您傳入的動畫標誌將被忽略。我猜如果你仔細觀察,你會發現你的崩潰是動畫而擴展不是。

由於顯式傳遞了animate標誌,因此我沒有看到任何標準的支持方式來覆蓋單個操作的這種行爲。

在3.0+中,您可以在渲染之前或之後調用記錄的方法getLayout()以獲取Container的佈局對象的引用。您可以在操作面板時簡單地將佈局對象的動畫屬性設置爲false,然後在完成後將其設置回。這是沒有記錄的工作,但可能會基於來源。

+0

謝謝你的想法。它的工作原理;) – Skay 2010-03-06 06:03:03

+3

'animate:false'是可接受的關閉動畫的方式 – 2010-03-09 03:56:50