Czy router szkieletowy lub widok powinien obsługiwać pobieranie danych i wyświetlanie statusu ładowania?

W wielu miejscach mojej aplikacji następuje następujący wzór:

Użytkownik klika jakiś link uruchamiający nawigacjęDane należy pobrać, aby wyświetlić widokProjekt interfejsu użytkownika wymaga pokazania pokrętła „ładowanie” podczas pobierania danychPo pobraniu danych pokazujemy renderowany widok

Próbowałem obu następujących wzorców implementacji:

Pobieranie uchwytów routera

Router mówi widokowi kontenera, aby pokazać ładujący spinnerRouter ładuje dowolne kolekcje / modeleRouter informuje widok kontenera, aby ukrył ładującą się przędzarkęRouter przekazuje kolekcje / modele do widoku i renderuje je

Pobieranie uchwytów widoku

Router po prostu tworzy i renderuje widokWidok pobiera potrzebne kolekcje i modeleKiedy widok jest po raz pierwszy renderowany, pokazuje tylko obracającą się tarczę, ponieważ dane wciąż się ładująGdy dane docierają, modele / kolekcje strzelają do zdarzeń, a widok jest powiązany z nimi, dzięki czemu sam się renderuje, ukrywając w ten sposób ładujący spinner i pokazując pełny widok

Nie lubię numeru 1, ponieważ router staje się gigantyczną kulą modelu / kolekcji, która przynosi logikę i wydaje się mieć zbyt dużą odpowiedzialność. # 2 wydaje się być lepszą alokacją obowiązków (router po prostu decyduje, który widok ma zostać wyświetlony, zobacz, jakie dane musi pobrać), ale sprawia, że ​​widok jest trochę trudniejszy, ponieważ jest teraz stanowy.

Co myśli społeczność StackOverflow? 1, 2 lub coś innego?

questionAnswers(2)

yourAnswerToTheQuestion