Ho una collezione ObservableArray
che si lega al tabella HTML con modifica di massa opzione (MVC3), ogni volta che l'utente preme impegnano ho voluto inviare solo le righe modificate dalla raccolta invece di inviare l'intero elenco viewmodel, si prega di avvisare se il modo migliore per tracciare o filtrare solo le righe modificate.modo migliore per ottenere modificato solo le righe da observableArray (quando non v'è possibilità di massa edit)
risposta
Ecco un post sulla creazione di una bandiera sporco in Knockout che traccia le modifiche a tutti osservabili in un oggetto.
In genere, si aggiunge una bandiera sporca a ciascun elemento dell'array in una funzione di costruzione o si scorre in ogni elemento e si aggiunge la bandiera. Quindi, è possibile creare un osservabile calcolato per rappresentare solo gli elementi modificati per l'invio al server.
Ecco un esempio che mostra una bandiera sporco su ogni articolo e un osservabile calcolato che contiene solo gli elementi sporchi: http://jsfiddle.net/rniemeyer/wauwn/
Si è compito non così banale come può sembra.
Inizialmente, la matrice osservabile gestisce solo la modifica dell'array (inserire, rimuovere, riordinare ecc.) Non la modifica dell'elemento.
In secondo luogo, è probabile che sia necessario un contrassegno speciale come "isModified" nel modello che si lega a ciascuna riga della tabella.
allora avete bisogno di impostare quella bandiera se una parte del legame è stato aggiornato. Le osservabili di Knockoutjs forniscono il metodo subscribe che consente di richiamare la propria funzione quando viene aggiornato l'osservabile. Dai uno sguardo alla pagina http://knockoutjs.com/documentation/observables.html in fondo c'è una sezione chiamata "iscriviti esplicitamente agli osservabili".
C'è un breve progetto di codice che esegue questo compito
function CreateArrayElementViewModel(inputData) {
// Creating our view model
var result = {
prop : ko.observable(inputData.prop),
val : ko.observable(inputData.val),
isModified: false // This property would be true if entity was edited
};
// Iterate over all properties and subscribe to knockoutjs observables
for(prop in result) {
if (typeof(result[prop].subscribe) != 'undefined') {
result[prop].subscribe(function() { result.isModified = true; });
}
}
return result;
}
Controllare che sottoscrivere è una funzione per essere sicuri, si sono ora solo testando che una proprietà esiste . Il test dovrebbe essere: 'result.hasOwnProperty (prop) && typeof result [prop] ===" function "' – froginvasion
- 1. KnockoutJS ObservableArray da aggiornare quando viene modificato l'osservatore interno
- 2. modo migliore per fare gli inserimenti di massa utilizzando dapper.net
- 3. Ottenere un oggetto da observableArray tramite indice
- 4. Riordino di massa SQL di righe
- 5. Bash edit file e mantieni le ultime 500 righe
- 6. Come parallelizzare le righe di lettura da un file di input quando le righe vengono elaborate in modo indipendente?
- 7. Qual è il modo migliore in Android per eliminare tutte le righe da una tabella
- 8. Come identificare solo le righe "non duplicate"
- 9. Il modo migliore per ottenere URL multilingue?
- 10. Il modo migliore per ottenere le singole cifre da int per l'ordinamento digitale in C/C++
- 11. Clojure modo migliore per ottenere più thread?
- 12. Eclipse - Mostra solo le attività per il file attualmente modificato
- 13. Utilizzare PHP_CodeSniffer solo per le righe modificate
- 14. Qual è il modo migliore per dividere una stringa per ottenere tutte le sottostringhe da Ruby?
- 15. ListBox perde la possibilità di modificare selecteditem quando selecteditem data è modificato
- 16. Un modo migliore per ottenere la directory di base?
- 17. Legge solo le prime righe di testo da un file
- 18. Il modo migliore per chiamare le funzioni Haskell da Java
- 19. Il modo migliore per richiamare le API Rest da angularjs?
- 20. Quali sono le possibilità di ottenere un duplicato Guid.NewGuid()?
- 21. Make non ricostruisce le intestazioni quando viene modificato
- 22. Qual è il modo migliore per comprimere le righe di una SELECT in una stringa?
- 23. Qual è il modo migliore per interrogare il conteggio delle righe da Core Data?
- 24. .NET WinForms InotifyPropertyChanged aggiorna tutti i binding quando ne viene modificato uno. Modo migliore?
- 25. Backbone - Possibilità di ottenere la collezione da un modello
- 26. CakePHP gestisce automaticamente le vulnerabilità di assegnazione di massa quando salva i dati modificati?
- 27. Ottenere l'ultimo file modificato da Azure Blob
- 28. Un modo migliore per determinare persino/righe dispari nella tabella
- 29. Il modo migliore per inviare e-mail di massa in asp.net
- 30. Esiste un modo migliore per contare le righe in un file di testo?
la tua soluzione è perfetta. Hai pensato di inviare questo ko.dirtyFlag alla squadra ko? –
Sono nella squadra di core del ko (solo 3 persone con Steve Sanderson lo sviluppatore principale). Il pensiero corrente è generalmente quello di mantenere il nucleo stretto e di mettere cose come questa in plugin. Potrei prendere in considerazione l'idea di metterlo come un vero e proprio progetto. –