Sollte der Backbone-Router oder die Backbone-Ansicht das Abrufen von Daten und das Anzeigen des Ladestatus verarbeiten?

In meiner App passiert an vielen Stellen folgendes Muster:

Der Benutzer klickt auf einen Link, der die Navigation auslöstZum Rendern der Ansicht müssen Daten abgerufen werdenBei der Gestaltung der Benutzeroberfläche muss ein "Laden" -Spinner angezeigt werden, während Daten abgerufen werdenSobald die Daten abgerufen wurden, wird die gerenderte Ansicht angezeigt

Ich habe beide der folgenden Implementierungsmuster ausprobiert:

Der Router übernimmt das Abrufen

Der Router weist die Containeransicht an, den Ladespinner anzuzeigenDer Router lädt alle Sammlungen / ModelleDer Router weist die Containeransicht an, den Ladespinner auszublendenDer Router übergibt die Sammlungen / Modelle an die Ansicht und rendert sie

Anzeigen behandelt Abrufen

Router erstellt und rendert nur die AnsichtDie Ansicht ruft die Sammlungen und Modelle ab, die sie benötigtWenn die Ansicht zum ersten Mal gerendert wird, wird nur der Ladespinner angezeigt, da die Daten noch geladen werdenWenn die Daten eintreffen, lösen die Modelle / Sammlungen Ereignisse aus, und die Ansicht ist an diese gebunden, sodass sie sich selbst wiedergibt. Dadurch wird der Ladespinner ausgeblendet und die vollständige Ansicht angezeigt

Ich mag Nr. 1 nicht, da der Router zu einer gigantischen Kugel aus Model / Collection-Abruflogik wird und zu viel Verantwortung zu haben scheint. # 2 scheint eine bessere Aufteilung der Zuständigkeiten zu sein (der Router entscheidet nur, welche Ansicht angezeigt wird, und zeigt an, welche Daten abgerufen werden müssen), aber die Darstellung wird dadurch etwas schwieriger, da sie jetzt einen Status aufweist.

Was denkt die StackOverflow-Community? 1, 2 oder etwas anderes?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage