Ricevo dati da un WCF e li lego a un tavolo. Sono stato aiutato in questo forum per aggiungere alcuni campi di calcolo e tutto funziona perfettamente. Mi piacerebbe aggiungere un totale al piè di pagina di questo tavolo. una versione semplice della mia pagina può essere vista allo http://jsfiddle.net/qeUHd/3/. Fondamentalmente mi piacerebbe imparare come aggiungere un campo al mio ViewModel che è il risultato della somma di un altro campo nel mio esempio "Amount". Qualsiasi aiuto sarebbe molto apprezzato. http://jsfiddle.net/qeUHd/3/somma di calcolo a eliminazione diretta
risposta
Nel tuo mazzo, stai mappando il tuo set di dati su self.model, quindi self.model è un observableArray. Dato che era il caso, avevo solo bisogno di mettere insieme un computed value per ottenere il totale.
self.total = ko.computed(function(){
var total = 0;
for(var p = 0; p < self.model().length; ++p)
{
total += self.model()[p].Amount();
}
return total;
});
Poi basta assicurarsi di legarsi ad esso.
<td data-bind="text: total">
stai facendo le cose un po 'indietro, ma suppongo che sia a causa del modo in cui si sta ricevendo i dati, così ho affrontato con esso e si è trasferito.
Anche se in genere suggerisco e supporto la collocazione di questi tipi di campi calcolati nel modello di visualizzazione (in genere quello in cui appartengono), ci sono momenti in cui si lavora con dati in cui è difficile aggiungere proprietà calcolate aggiuntive. Un esempio potrebbe essere se si raggruppano i dati all'interno della vista. In tal caso, è ancora possibile visualizzare il totale, ma spostare il calcolo alla vista:
<td data-bind="text: $data.reduce(function(x,y) { return x + y.Amount(); }, 0)"></td>
- 1. a eliminazione diretta - HTML href
- 2. Estensione di array osservabile a eliminazione diretta
- 3. vincolante con scorrimento virtuale a eliminazione diretta
- 4. Iterazione di un array osservabile a eliminazione diretta in javascript
- 5. Funzione di aggiornamento binding a eliminazione diretta non attiva
- 6. somma di calcolo con PHPExcel
- 7. Attacco a eliminazione diretta clicca associazione su applyBindings
- 8. Chiama standard Binding a eliminazione diretta da un binding personalizzato
- 9. ad eliminazione diretta osservabile Prestazioni dell'array
- 10. Foglio di calcolo Google SOMMA Confronto dati
- 11. Applicazione di estensori ad eliminazione diretta dopo la mappatura
- 12. modello a eliminazione diretta - vincolo del testo a una funzione, con dati di modello passati in
- 13. Calcolo della somma cumulativa dell'elenco in Haskell
- 14. Calcolo somma della serie geometrica (mod m)
- 15. Ottimizzazione delle prestazioni di un'applicazione a eliminazione diretta - Linee guida per migliorare i tempi di risposta
- 16. Aggiunta di formattazione decimale a eliminazione diretta associazioni di dati numerici
- 17. elemento Recupero con jQuery all'interno evento ad eliminazione diretta
- 18. convalida a eliminazione diretta: qualsiasi opzione per applicare errorElementClass a padre dell'input?
- 19. Come posso accedere a un oggetto per indice in un osservabile a eliminazione diretta?
- 20. Come calcolare il valore totale del carrello dal campione di carrello in mc a eliminazione diretta
- 21. a eliminazione diretta non imposta un valore vero iniziale sul pulsante di opzione
- 22. Calcolo della somma di interi in un array
- 23. Sammy.js instradamenti non attivati dai collegamenti a eliminazione diretta in IE10
- 24. Prevenire la convalida a eliminazione diretta dalla valutazione sul carico iniziale
- 25. Come creare un abbonamento osservabile a eliminazione diretta che si attiva solo una volta?
- 26. elenco a discesa ad eliminazione diretta passare la selezione al modello in MVC5
- 27. Come posso eseguire un binding a eliminazione diretta con un URL backgroundImage?
- 28. Come si fa consolare di log all'interno di un modello di eliminazione diretta
- 29. Problemi con il modello di messaggio personalizzato di convalida ad eliminazione diretta
- 30. Calcolo della somma e della somma dei quadrati allo stesso tempo con Stream
Grazie molte per iniziare a capire knockout logico grazie al fantastico team di esperti qui. –