Domanda

Sto pensando a un'implementazione di MVP - Passive View Pattern in JavaScript.Nella maggior parte dei casi la vista sarà elementi semplici DOM in cui il presentatore che collega gli ascoltatori di eventi.Ma quando si tratta di widget come JavaScript Based Pseudo Selectboxes, Auto Suggerisci o funzionalità ARIA, se si tratta di far parte di una classe di visualizzazione JavaScript o nella logica per cambiare la vista è parte del presentatore? Ho guardato il javascriptmvcs Visualizza e sembra che siano solo modelli generati HTML senzaqualsiasi logica.Ma per me non sembra che non ci sia diverso tra un presentatore che è l'ascolto di HTML SelectBox e chi ascolta una casella di selezione pseudo con la logica JavaScript per imitare una casella Selezione reale.Entrambi non dovrebbero preoccuparti di come la scatola funziona internamente, devono solo ascoltare l'evento di modifica.

Quindi cosa pensi.Qual è il lavoro della classe di vista.

È stato utile?

Soluzione

Il lavoro della vista è come un Adattatore alla tecnologia di visualizzazione. In questo caso, la tua tecnologia di visualizzazione è probabilmente jQuery su HTML tramite JavaScript. La vista dovrebbe essere progettata per fare tre cose:

    .
  • sai quando si verificano eventi e comunicare questi eventi al presentatore (questo potrebbe essere indirettamente, utilizzando un framework di messaggistica come Postal.js )
  • Informi il presentatore (quando richiesto) "Qual è il valore di x " dove x è un valore rappresentato nella vista.
  • Accetta i messaggi dal presentatore (di solito attraverso una chiamata di metodo diretto) per modificare i valori sulla vista.

Una vista nel pattern di vista passiva è non in stato . Ripeto, una vista non rappresenta lo stato . Ciò che intendo per questo è che tutto lo stato e la conoscenza della transizione statale è rappresentato dal presentatore. La vista è semplicemente la colla che fornisce indiretta tra il presentatore e la tecnologia di visualizzazione effettiva. oltre i tre punti di proiettile sopra, non incapsula alcuna conoscenza di cosa fare con le informazioni che contiene . Questo è importante, perché non dovresti mai aspettarti che la vista sia in uno stato coerente. Dovresti sempre tenere il presentatore responsabile della gestione dello stato della vista.

Inserire l'immagine Descrizione qui

Lo stack sopra dimostra come prevedere il modello, la vista e il presentatore interagire, nonché la loro relazione con la tecnologia di visualizzazione e il controller.

    .
  • Il browser, HTML e DOM (gestito tramite jQuery) sono la tecnologia View . Questi sono intrinsecamente complessi, e incapaci di rappresentare il tuo modello.
  • La vista Protegge la tua logica dalla tecnologia View . Fornisce indiretta in modo da poter concentrarti su un vecchio codice del tuo Presenter . La vista dovrebbe utilizzare una sorta di messaggistica per comunicare indietro al presentatore. Ciò impedisce una dipendenza bidirezionale tra la vista e il presentatore. Permette inoltre a presentatori multipli di manipolare una vista.
  • La Presenter dovrebbe essere responsabile della comprensione della natura astratta della vista e dovrebbe gestire lo stato Model in base alla sua interfaccia alla vista. È in grado di capire come recuperare un modello dallo conller e come persistere il modello torna al server.
  • Il Modello è una rappresentazione di stato in un punto specifico . Può anche fungere da DTO tra il Controller e il Presenter . In JavaScript, è facile e talvolta preferibile aggiungere semplicemente il comportamento del presentatore al modello .
  • Il controller coordina la navigazione all'interno dell'applicazione ed è responsabile per l'abstractioning dei servizi di back-end dalla presentazione.

Altri suggerimenti

L'oggetto di visualizzazione dovrebbe essere responsabile del disegno stesso.Una vista passiva conosce come per fare cose, non quale da fare.Deve essere responsabile per sparare i propri eventi.Solo perché è un widget casella di selezione personalizzato non renderlo diverso da una casella di selezione regolare.

Se il presentatore ha rilevato tutte le responsabilità dei punti di vista, allora non c'è bisogno di una vista.Potrebbe anche avere solo un presentatore.

Le viste JavaScriptMvc sono modelli laterali dummy client.I regolatori del nodo tendono ad assumere un ruolo di visione più tradizionale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top