Должен ли магистральный маршрутизатор или представление обрабатывать выборку данных и отображать статус загрузки?

Во многих местах моего приложения происходит следующий шаблон:

  • Пользователь щелкает какую-либо ссылку, запускающую навигацию
  • Данные должны быть получены для отображения представления
  • Дизайн пользовательского интерфейса требует, чтобы во время выборки данных показывался «загрузочный» счетчик
  • После выборки данных мы показываем визуализированное представление

Я пробовал оба следующих шаблона реализации:

  1. Маршрутизатор обрабатывает выборку

    • Router указывает представлению контейнера показывать счетчик загрузки
    • Router загружает все коллекции/модели
    • Router сообщает представлению контейнера скрывать счетчик загрузки
    • Router передает коллекции/модели представлению и отображает его
  2. Представление обрабатывает выборку

    • Маршрутизатор просто создает и отображает представление
    • Представление извлекает коллекции и модели, которые ему нужны
    • Когда представление впервые отображается, оно просто показывает счетчик загрузки, поскольку данные все еще загружаются
    • Когда данные поступают, модели/коллекции срабатывают даже ts, и представление привязано к ним, поэтому оно перерисовывается, таким образом скрывая счетчик загрузки и показывая полное представление.

Мне не нравится № 1, поскольку маршрутизатор становится гигантским шаром логики выборки модели/коллекции и, похоже, слишком большая ответственность.Вариант 2 кажется лучшим распределением обязанностей (маршрутизатор просто решает, какое представление отображать, представление определяет, какие данные ему нужно получить), но это делает отображение представления немного сложнее, поскольку теперь оно сохраняет состояние.

Что думает сообщество StackOverflow? 1, 2 или что-то еще?

17
задан Peter Lyons 29 May 2012 в 23:48
поделиться