Spesso il modello a vista produce un modello sottile

2

Quanto dovrebbe essere spessa una visuale? Ad esempio, il mio modello di vista o modello dovrebbe gestire il filtro effettivo?

Ad esempio, supponiamo di avere un oggetto Roster contenente una raccolta di Utenti a cui è assegnato un tipo (ad esempio, a tempo pieno, part-time, ecc.). Invece di avere un grande viewmodel per gestire il filtraggio di full-time o part-time (perché è ciò che il client ha selezionato), sembra che sarebbe meglio per il modello di ruolo gestirlo dicendo roster.GetUsersByType(type) .

Ho un problema simile con il mio oggetto Schedule (che contiene un elenco di eventi). A me sembra che, dal momento che ho un programma principale di tutte le pianificazioni dell'utente, è meglio che il modello lo filtri e mi dia qualcosa come Schedule userSchedule = masterSchedule.GetScheduleOfUser(user) o Schedule selectedSchedule = masterSchedule.GetScheduleByDateInterval(dateFrom, dateTo) .

Inoltre, se volessi scambiare le Views per testare un nuovo campo (quindi, necessitavo di un nuovo viewmodel), dovrei quindi aggiungere questa logica di filtraggio al nuovo viewmodel (violando DRY).

Tuttavia, sto leggendo molto che il viewmodel dovrebbe essere spesso e dovrebbe gestire il filtraggio e la logica dell'interfaccia utente. Sto comprendendo questo in modo errato? Sembra che molte persone implementino modelli di dominio anemici quando eseguono MVVM (perché è quello che mostra la maggior parte delle esercitazioni ... ad esempio, per me questo sarebbe ObservableCollection nel ViewModel con un oggetto User e un oggetto Event).

Ma sembra più naturale voler spingere la logica verso il basso nei singoli componenti il più lontano possibile.

    
posta keelerjr12 24.01.2018 - 17:11
fonte

1 risposta

1

Preferirei il filtraggio nel modello se ci si aspetta che il metodo di filtro sia utilizzato in più punti del programma e si filtri nel ViewModel se si sa che il filtro verrà utilizzato solo una volta, in quel particolare ViewModel.

    
risposta data 24.01.2018 - 17:17
fonte

Leggi altre domande sui tag