J'ai une liste de factures affichée à l'écran. À l'heure actuelle, un utilisateur peut sélectionner ou désélectionner une facture avec une case à cocher ou modifier le montant qu'il souhaite payer. Lorsque cela se produit, le montant total à payer pour toutes les factures est résumé et affiché.Modification d'une collection json dans jquery
Le but ultime ici est de garder trace d'un tableau de tableaux de données, qui vient du serveur. J'utilise JSON parce que c'est standardisé.
Puis j'ai un caché avec des données JSON comme ceci:
<input id="InvoicingGridRows" name="InvoicingGridRows" type="hidden"
value="[[{"Value":"TST-1000"},{"Value":346.230000},
{"Value":null},{"Value":null},{"Value":null},
{"Value":null}],
[{"Value":"TST-1001"},
{"Value":126.970000},{"Value":null},{"Value":null},
{"Value":null},{"Value":null}]]" />
En ce moment, les données a beaucoup d'espaces réservés vides pour les données. Ce que j'essaye de faire est de créer un objet javascript de sorte que quand les événements se produisent au-dessus qui provoquent l'addition, je peux lancer des éditions ciblées/suppressions/additions. Voici ce que j'ai jusqu'ici.
var invoiceRows = function() {
var targetControl = '';
var getByInvoiceId = function (invoiceId) {
var data = $(targetControl.val());
for (var x = 0; x < data.length; x++) {
if (data[x][0].Value == invoiceId)
return data[x];
}
return null;
};
return {
init: function (selector, invoices) {
targetControl = $(selector);
//set up the gridrows to defaulted values
targetControl.val(invoices);
},
save: function (invoiceId, amount) {
var invoiceData = getByInvoiceId(invoiceId);
if (invoiceData) {
//update
} else {
//add new
}
},
remove: function (invoiceId) {
//remove row with invoiceid
}
}
}();
Ma question est de savoir comment puis-je modifier facilement/supprimer des lignes ainsi que d'ajouter de nouvelles lignes dans mon objet JSON, puis enregistrez-le dans le champ caché? Est-ce possible ou existe-t-il un meilleur moyen? Je suis ouvert aux suggestions.