ExtJS 4 - рендеринг компонентов, которые изначально скрыты - PullRequest
1 голос
/ 01 декабря 2011

Одно существенное различие, которое я заметил между ExtJS 3.x и 4.x, заключается в том, как обрабатывается рендеринг / компоновка для компонентов, которые визуализируются внутри содержащего элемента с отображением: нет (НЕ создается / отслеживается Ext). содержащий элемент). В 3.x, после показа содержащего элемента, компонент Ext, который он содержит, будет правильно отображаться и иметь размеры, соответствующие тем размерам, которые я для него установил.

Однако в 4.x этот же компонент не будет отображаться вообще и будет иметь нулевую высоту и ширину, когда был показан его содержащий элемент. После того, как было видно, если я сделаю вызов .setSize (), он будет правильно отображаться. Проблема в том, что в моем приложении просто нет возможности пройти через все события, которые могут привести к отображению скрытого компонента, и добавить код, чтобы убедиться, что его макет вручную принудительно пересчитан.

Так что мой вопрос, есть ли способ вернуть поведение 3.x в этой ситуации для всех компонентов по всем направлениям в 4.x?

1 Ответ

0 голосов
/ 01 декабря 2011

То, что вы можете попытаться сделать, это настроить прослушиватели на ваших компонентах, которые делегируют базовым элементам DOM, возможно, это решит вашу проблему. Однако я предлагаю, если это вообще возможно, использовать каркас для управления всем макетом страницы с помощью Viewport. Вы все еще можете всасывать HTML (если необходимо) и визуализировать его, например, внутри контейнеров или панелей. Идеальный пример использования - это верхний и нижний колонтитулы, которые генерируются кодом на стороне сервера (jsp, gsp, asp ..) и затем отображаются в северном или южном регионах области просмотра с использованием конфигурации contentEl : 'myDivId'.

...