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 widokPró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 jePobieranie 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 widokNie 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?