Задать вопрос
lightarhont
@lightarhont
python/php developer

Как определить в SPA-Marionette когда все компоненты отрендерятся?

Чтобы вешать Backbone.history.start() и снимать заглушку?
Может, вешать событие onShow на каждый view и, когда все элементы будут показаны, запускать событие 'ready'?
  • Вопрос задан
  • 185 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
Для того, чтобы выполнить какой-то код, зависящий от другого асинхронного кода, используются Промисы. Можно в инициализаторе приложения создавать deffered-объекты, передавать их во View, а там резолвить в onRender. Когда все объекты отрезолвятся - запускать ваш код.
Но судя по описанию, у вас что-то не так с архитектурой, обычно таких проблем не должно возникать. Максимум, с чем обычно приходится иметь дело - запускать одни модули после старта других.
Ответ написан
Комментировать
aen
@aen
Keep calm and 'use strict';
Все зависит от того, как вы организовали каскад представлений. Допустим у вас есть некоторое LayoutView с парой регионов. Вы можете сначала его отрендерить, а потом уже рендерить представления внутри регионов. Тогда вам нужно будет ловить момент рендеринга вьюх в каждом регионе. Но если вы будете использовать хук onBeforeShow(), внутри которого пропишите рендеринг вьюх в регионе, то вам нужно будет ловить момент рендеринга только LayoutView, так как оно вставится в DOM одним куском вместе с вложенными представлениями.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы