當我使用ko.mapping.toJSON
時,它將我所做的任何更改轉換爲字符串,並且它們需要是數字。我嘗試使用像這樣的自定義映射:KnockoutJS - 使用ko.mapping插件的特定字段的強制編號
var mapping = {
'y': {
update: function(options) {
return parseFloat(options.data);
}
}
}
...但這隻能讓它們保持爲頁面內部的數字。由於我使用這個來更新和由HighCharts.js引入的外部JSON,所以這些數字在toJSON之後仍需要保留數字。
從較早的答案在這裏,我能夠使用:
//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中的一種單值類型,所以我不清楚如何使用相同的覆蓋。我是否也需要在這個實例中創建一個全新的對象來執行此操作。還是他們的東西更簡潔?
好吧。我只是在這篇文章中使用了相同的功能。 http://stackoverflow.com/questions/7612046/template-for-a-single-dimension-array-with-knockout-js-and-ko-mapping 相似,但我仍然有興趣知道這是否是「最好」的方式來解決這個問題。 –