MVVM ViewModel dovrebbe iniettare un modello HTML per la visualizzazione predefinita?

4

Sto lavorando alla progettazione di applicazioni Web che include Knockout.js e ho una domanda MVVM generale: Ha senso che il ViewModel inietti automaticamente un modello HTML predefinito (estratto da un file separato)?

Maggiori dettagli: supponiamo di avere un sito come questo ...

header...
    widget 1
    widget 2
    widget 3
footer

... e i widget 1/2/3 diventeranno i Knockout.js ViewModels determinati in fase di runtime da un elenco generale di widget disponibili, ciascuno con un file modello HTML associato. Capisco che in MVVM si desidera che la vista (modello HTML in questo caso) sia separata dal ViewModel (file Javascript in questo caso) in modo che le persone possano modificarla separatamente e possibilmente fornire più modelli per "skin" differenti. Tuttavia, sembra che abbia senso anche che ViewModel punti a un template html predefinito che viene automaticamente utilizzato a meno che il codice di controllo non ne fornisca uno diverso.

Sto guardando correttamente?

Ad esempio, vedi questa risposta su StackOverflow dove consiglia di iniettare l'HTML e quindi il ViewModel. Sembra che un one-liner avrebbe più senso in quel caso, con la possibilità di sovrascrivere un valore di modello predefinito.

    
posta explunit 18.03.2013 - 21:20
fonte

2 risposte

1

MVVM non ha una definizione rigorosa, io uso quella descritta da Microsoft (come capita da me, ognuno ha le proprie idee su di esso).

Uno dei suoi obiettivi principali è quello di astrarre la vista dal viewmodel, e una delle regole principali è 'solo le viste dovrebbero chiamare altre viste, perché ViewModel non dovrebbe sapere nulla sulla sua vista'.

Quindi, per dare una semplice risposta teorica: penso che una volta caricata, la tua vista dovrebbe chiedere al viewmodel la lista dei widget da caricare e quindi la tua vista dovrebbe caricare i corrispondenti widget.

In questo modo, la logica viene gestita dal ViewModel e solo una vista chiama altre viste.

    
risposta data 09.05.2014 - 17:45
fonte
0

Penso che in questo contesto (di favorire la flessibilità tramite un'interfaccia composta da widget) utilizzando un layout assegnato da ViewModel sia un gioco leale. l'interfaccia / layout di default è altrettanto ben servita come modello insieme a tutto il resto. Rende solo più difficile da capire e probabilmente avresti un altro passo nel tuo flusso di lavoro e debugging, anche se questi potrebbero essere progettati con app o script di supporto.

Professionisti: flessibilità, manutenibilità *

Contro: meno intuitivo *, leggero ritardo nel rendering

* se / a meno che tu non lo comprenda!

    
risposta data 28.05.2013 - 23:51
fonte

Leggi altre domande sui tag