2010-03-05 65 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