我有一个具有相当多属性的视图模型,但我只想使用toJSON方法序列化两个可观察数组。这可能吗?
我确实遇到过一篇文章说要做这样的事情:
var json = ko.toJSON(self, ["rates", "discounts"]);
但这只会产生以下结果:
{"rates":[{},{},{},{},{},{}],"discounts":[{},{},{},{}]}
这是正确的费率和折扣数量,但由于某种原因它们都是空的。
答案 0 :(得分:1)
单程
var json = ko.toJSON({ rates: self.rates, discounts: self.discounts });
或者使用ko.mapping插件,您可以在其中配置要包含的成员
答案 1 :(得分:0)
您可以使用Array.map来展平数组中的项目。
这应该可以解决问题:
function flattenArrayItem(arrayItem) {
var result = {
prop1: arrayItem.prop1,
prop2: arrayItem.prop2
// continue mapping needed properties
};
return result;
}
// if observable array
var json = ko.toJSON(someArray().map(flattenArrayItem));
// if normal array
var json = ko.toJSON(someArray.map(flattenArrayItem));