Ho giocato con KnockoutJS e mi piace moltissimo quanto semplifica il design da ogni angolazione, evitando che le cose cadano attraverso le fessure. La mia domanda è qual è la "best practice" raccomandata per il salvataggio dei dati sul server? La mia comprensione è che in un MVVM connesso, la prima "M" è il livello dati e quindi il rilevamento delle dipendenze e le notifiche nel trigger ViewModel vengono salvati direttamente sul livello dati. In un'app JavaScript, siamo disconnessi e rispediamo selettivamente al server usando AJAX.Il modo migliore per salvare le modifiche nell'applicazione Web MVVM/Knockoutjs?
L'app in cui mi sto attualmente utilizzando è MVC3 e ottengo assolutamente come scrivere un'azione "Salva" sul mio controller, plopare un pulsante "Salva" da qualche parte sulla mia pagina, postare l'intero ViewModel in quella azione Salva e quindi persistono nel database. Ma cosa succede quando fai una modifica veloce e poi la salvi di nuovo? O cosa succede se un pulsante Salva non si adatta al flusso del design? Invece, vuoi postare l'azione ogni volta che viene apportata una modifica sul modulo senza alcun pulsante Salva? Le idee che ho rimbalzato in giro sono:
- Messaggio tutto il ViewModel ogni volta che qualsiasi cambiamento è fatto e fanno la figura di azione ciò che è nuovo e ciò che non lo è (non è l'ideale, soprattutto per i modelli di grandi dimensioni, se non altrimenti perché i dati trasmessi su ogni salvataggio sarebbero inutilmente grandi).
- Aggiungere una proprietà a ciascun elemento nel ViewModel che tiene traccia se è nuovo e/o modificato dall'ultimo salvataggio. Quindi, grep out quegli articoli e posta solo quelli sul server (non ho testato questo, ma presumo che questo può essere fatto utilizzando la proprietà _destroy, come previsto per una app Rails).
- Separato in tanti ViewModels più piccoli è plausibile in modo che qualsiasi dolore delle prime due opzioni sia ridotto al minimo (ciò dovrebbe probabilmente essere fatto indipendentemente).
- Qualche altro modo migliore?
sono fiducioso ci sono alcune buone idee là fuori che non ho pensato. Essere in grado di legare in modo dichiarativo tutto E ancora salvare in modo efficiente sarebbe fantastico.
Stai confondendo MVC (come in ASP.NET MVC) e MVVM. Entrambi hanno sostanzialmente lo stesso schema, ma MVVM ha delle modifiche specifiche per la progettazione rispetto alle applicazioni WPF. – Will
In realtà KnockoutJS (http://knockoutjs.com) utilizza il pattern MVVM, che è anche il riferimento del poster. –
Bella domanda!La stessa domanda senza Knockout sarebbe forse ancora più utile, dato che è solo uno dei tanti, molti framework JS là fuori. Continuerò la mia ricerca per la risposta a questa domanda. – noocyte