¿Debería el enrutador de la red troncal o la vista controlar la obtención de datos y mostrar el estado de carga?

En muchos lugares de mi aplicación ocurre el siguiente patrón:

El usuario hace clic en algún enlace que activa la navegación.Los datos deben ser recuperados para renderizar la vista.El diseño de la interfaz de usuario requiere que se muestre un girador de "carga" mientras se recuperan los datosUna vez recuperados los datos, mostramos la vista renderizada.

He probado los dos patrones de implementación siguientes:

El enrutador se encarga de recuperar

El enrutador indica a la vista del contenedor que muestre la rueda de carga.Router carga cualquier colección / modelo.El enrutador le dice a la vista del contenedor que oculte la rueda de cargaEl enrutador pasa las colecciones / modelos a la vista y los renderiza

Ver tiradores de recuperación

El enrutador simplemente crea y renderiza la vista.La vista recoge las colecciones y modelos que necesita.Cuando la vista se representa por primera vez, solo muestra la rueda de carga ya que los datos aún se están cargandoCuando llegan los datos, los modelos / colecciones activan los eventos y la vista está vinculada a ellos, por lo que se vuelve a representar, ocultando así la rueda de carga y mostrando la vista completa.

No me gusta el # 1 ya que el enrutador se convierte en una bola gigantesca de lógica de recuperación de modelos / colecciones y parece tener demasiada responsabilidad. El # 2 parece ser una mejor asignación de responsabilidades (el enrutador simplemente decide qué vista mostrar, la vista determina qué datos necesita obtener), pero hace que la vista se vuelva un poco más complicada, ya que ahora está llena de estados.

¿Qué piensa la comunidad StackOverflow? 1, 2, o algo mas?

Respuestas a la pregunta(2)

Su respuesta a la pregunta