我有一个具有很多属性的视图模型,但我只想使用 toJSON 方法序列化两个可观察数组。这可能吗?
我确实遇到过一篇文章说要做这样的事情:
var json = ko.toJSON(self, ["rates", "discounts"]);
但这只会产生以下结果:
{"rates":[{},{},{},{},{},{}],"discounts":[{},{},{},{}]}
这是正确的费率和折扣数量,但由于某种原因它们都是空的。
我有一个具有很多属性的视图模型,但我只想使用 toJSON 方法序列化两个可观察数组。这可能吗?
我确实遇到过一篇文章说要做这样的事情:
var json = ko.toJSON(self, ["rates", "discounts"]);
但这只会产生以下结果:
{"rates":[{},{},{},{},{},{}],"discounts":[{},{},{},{}]}
这是正确的费率和折扣数量,但由于某种原因它们都是空的。
单程
var json = ko.toJSON({ rates: self.rates, discounts: self.discounts });
或者使用 ko.mapping 插件,您可以在其中配置要包含的成员
您可以使用 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));