Lorsque je lie des données numériques dans mon modèle de vue en utilisant knockout, elles s'affichent correctement mais changent le type de données en chaîne si l'utilisateur change la valeur de la balise d'entrée. Le problème de la soumission d'une chaîne est que le serveur s'attend à une valeur numérique sans qu'aucune conversion implicite ne soit disponible.
Y a-t-il un moyen de dire à knockout de conserver le type de données de la valeur de la propriété d'origine ?
Mon exemple de code qui fait correspondre les noms des modèles de vue aux noms des balises d'entrée. J'utilise un knockout discret pour faire les liaisons, ce qui fonctionne bien.
// Bind the first object returned to the first view model object
// FNS is the namespace, VM is the view model
FNS.VM.Items[0] = ko.mapping.fromJS(data.Items[0]);
// For each property found, find the matching input and bind it
$.each(FNS.VM.Items[0], function (indexInArray, valueOfElement) {
var attrName = indexInArray;
var attrValue;
if (typeof valueOfElement == "function")
attrValue = valueOfElement();
else
attrValue = valueOfElement;
var a = $('input[name="' + attrName + '"][type="checkbox"]');
if (a.length)
a.dataBind({ checked: 'VM.Items[0].' + attrName });
var b = $('input[name="' + attrName + '"][type="radio"]');
if (b.length)
b.dataBind({ checked: 'VM.Items[0].' + attrName });
var c = $('input[name="' + attrName + '"][type="text"]');
if (c.length)
c.dataBind({ value: 'VM.Items[0].' + attrName });
});
ko.applyBindings(FNS);