Во многих местах моего приложения происходит следующее:
- Пользователь нажимает на какую-то ссылку, запускающую навигацию.
- Данные должны быть отображены для визуализации представления
- Для создания пользовательского интерфейса требуется показ данных, которые будут отображаться во время загрузки данных
- После того, как данные будут получены, мы покажем рендерное представление
Я попробовал оба следующих шаблона реализации:
-
Маршрутизатор обрабатывает выборку
- Маршрутизатор сообщает контейнеру, чтобы показать загрузчик
- Маршрутизатор загружает все коллекции/модели
- Маршрутизатор сообщает контейнеру, что он скрывает загрузчик
- Маршрутизатор передает коллекции/модели в представление и делает его
-
Просмотр образов обработок
- Маршрутизатор просто создает и отображает представление
- Вид выбирает коллекции и модели, в которых он нуждается.
- Когда представление сначала отображается, оно просто показывает загрузчик загрузки, поскольку данные все еще загружаются.
- Когда данные поступают, события пожара моделей/коллекций и представления привязаны к тем, чтобы они повторно отображались, тем самым скрывая загрузчик и отображая полный вид
Мне не нравится # 1, поскольку маршрутизатор становится гигантским шаром логики выборки Model/Collection и, похоже, несет слишком большую ответственность. # 2 кажется лучшим распределением обязанностей (маршрутизатор просто решает, какое представление показывать, просматривать, какие данные ему нужно извлечь), но это делает представление рендеринга немного более сложным, так как оно теперь имеет смысл.
Что думает сообщество StackOverflow? 1, 2 или что-то еще?