ExtJS: отключить аккордеонную анимацию - PullRequest
2 голосов
/ 06 марта 2010

Я создал аккордеон так:

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

Затем я добавляю элементы с помощью метода add (), затем перерисовываю их с помощью doLayout () и устанавливаю activeItem:

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

Я вызываю метод expand () с параметром false, но он по-прежнему анимирует переход, поэтому он берет настройки из основного макета и игнорирует то, что я отправил в раскрытие (). Как решить эту проблему?

1 Ответ

5 голосов
/ 06 марта 2010

При развертывании элемента в соответствующей панели происходят две вещи: 1. Старый активный элемент свернут 2. Новый активный элемент расширен

Свертывание старого активного элемента обрабатывается макетом аккордеона и происходит во время события «beforeexpand». Глядя на исходный код, я вижу, что макет аккордеона вызывает var ai = this.activeItem; ai.collapse (this.animate)

Итак, анимация свертывания старого активного элемента полностью определяется свойством «animate» макета аккордеона. Флаг анимации, который вы передаете, в этих целях игнорируется. Я предполагаю, что если вы посмотрите внимательно, вы увидите, что ваш коллапс анимирован, а расширение - нет.

Поскольку флаг animate передается явно, я не вижу никакого стандартного, поддерживаемого способа переопределить это поведение для одной операции.

В версии 3.0+ вы можете вызвать документированный метод getLayout () до или после рендера, чтобы получить ссылку на объект макета контейнера. Вы можете просто установить свойство animate объекта макета в false при манипулировании панелью, а затем вернуть его обратно, когда закончите. Это не задокументировано для работы, но, вероятно, будет основано на источнике.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...