MVVM comunica tra le viste

3

So che possiamo utilizzare il modello di mediatore per comunicare tra i modelli di visualizzazione ma per quanto riguarda le viste?

Supponiamo che abbia un pulsante nella Vista A che dovrebbe attivare la funzionalità della Vista B. Come è preferibile farlo? Potrei usare il Mediator ma sembra più un hack.

Ecco un mio pensiero:

    
posta Asperger 10.07.2017 - 14:23
fonte

1 risposta

3

Lets assume I have a button in View A which should trigger functionality of View B.

Secondo il Pattern MV (V) C non ci dovrebbe essere alcuna "funzionalità" in nessuna vista.

La funzionalità dovrebbe essere nel livello controller che gestisce lo stato delle applicazioni modificando il modello secondo necessità.

Ora puoi avere tanti livelli di vista (in parallelo o in sequenza) per visualizzare i dati del modello e manipolarli tramite il controller.

Poiché il modello fornisce l'infrastruttura per propagare le modifiche, la Vista B può registrarsi per determinate Proprietà per ottenere le informazioni sulle modifiche in modo che possa aggiornarsi quando Visualizza A ha cambiato la proprietà.

So for functionality I have extra classes called (some prefix)ViewController? Do we also have controller for viewmodels? (ViewModelController) – Asperger

Non mettere la tua attenzione su quei nomi. Dopo tutti i nomi sono solo polvere nel vento.

Il punto è che devi affrontare questo modello , controller a 3 livelli e visualizza . I diversi nomi (MVC, MVVC, MCP) sono solo variazioni e non significano molto per me.

Inoltre, non li si inserisce necessariamente in progetti, pacchetti o classi separati. Lo schema riguarda fondamentalmente la direzione della comunicazione :

  • il modello non parla mai con nient'altro direttamente, solo tramite le interfacce che fornisce (principalmente metodi getter / setter e *Listener interfacce).
  • il controller parla solo con il modello tramite le interfacce models .
  • la vista ottiene i dati (e cambia le informazioni) per la visualizzazione dal modello e traduce l'input dell'utente alle chiamate nel livello controller . Non aggiorna mai il modello stesso.
risposta data 10.07.2017 - 15:06
fonte

Leggi altre domande sui tag