В чем разница между событиями, такими как afterLayout и макет, afterRender и рендеринг? Я понимаю разницу между beforeLayout и afterLayout - но как отличается событие макета?
AfterLayout vs layout, afterRender vs render и т.д. в ExtJS?
Ответ 1
Примечание. Относится только к Ext 3.x. Ответ был получен в 2010 году.
Нет события "layout", только afterLayout
. В документах afterLayout "Выполняется, когда компоненты в этом контейнере организованы соответствующим менеджером компоновки", что довольно понятно. afterLayout
запускается только подклассами Container, которые отвечают за установку дочерних компонентов.
С другой стороны, все подклассы Component (включая контейнеры) запускают события render
и afterRender
. Основное отличие состоит в том, что afterRender
срабатывает позже. render
срабатывает после завершения разметки DOM, но перед другими вещами, которые могут произойти (например, скрытием, отключением, восстановлением состояния и т.д.) во время процесса рендеринга. afterRender
срабатывает как самое последнее событие после завершения всего этого. Чтобы полностью понять это, вы должны посмотреть на источник метода Ext.Component.render()
, который показывает шаг за шагом, как работает процесс рендеринга, и когда эти события запущены.