当我使用ko.mapping.toJSON
它时,它会将我所做的任何更改转换为字符串,并且它们需要是数字。我尝试像这样使用自定义映射:
var mapping = {
'y': {
update: function(options) {
return parseFloat(options.data);
}
}
}
...但这只会将它们作为数字保留在页面的范围内。由于我使用它来更新由 HighCharts.js 提取的外部 JSON,因此即使在 toJSON 之后,数字也需要保持数字。
从较早的答案here我可以使用:
//override toJSON to turn it back into a single val
mappedData.prototype.toJSON = function() {
return parseInt(ko.utils.unwrapObservable(this.val), 10); //parseInt if you want or not
};
......游泳效果很好。然而,这只是 JSON 中的单一值类型,所以我不清楚如何使用相同的覆盖。在这种情况下,我是否也需要创建一个全新的对象来执行此操作。还是他们的东西更简洁?