我创造了这样的手风琴:
layout:'accordion',
layoutConfig:{
animate:true
}
Run Code Online (Sandbox Code Playgroud)
然后我通过add()方法添加元素,然后用doLayout()重新渲染它并设置activeItem:
navigation_panel.getComponent(1).expand(false);
Run Code Online (Sandbox Code Playgroud)
我使用false参数调用expand()方法,但它仍然为转换设置动画,因此它需要从主布局设置并忽略我发送到expand().如何解决这个问题呢?
在相应面板中展开项目时会发生两件事:1.旧活动项目已折叠2.新活动项目已展开
旧活动项目的折叠由手风琴布局处理,并在"beforeexpand"事件期间发生.看一下源代码,我看到手风琴布局调用var ai = this.activeItem; ai.collapse(this.animate)
因此,旧活动项目的折叠动画完全由手风琴布局的"animate"属性决定.出于这些目的,将忽略您传入的动画标记.我猜你如果仔细观察,你会发现你的崩溃是动画的,而扩展则不是.
因为animate标志是显式传递的,所以我没有看到任何标准的,支持的方式来覆盖单个操作的这种行为.
在3.0+中,您可以在渲染之前或之后调用记录的方法getLayout()来获取Container的布局对象的引用.您可以在操作面板时将布局对象的animate属性设置为false,然后在完成后将其设置为false.这没有记录可行,但可能基于源.