1

我有一个具有很多属性的视图模型,但我只想使用 toJSON 方法序列化两个可观察数组。这可能吗?

我确实遇到过一篇文章说要做这样的事情:

var json = ko.toJSON(self, ["rates", "discounts"]);

但这只会产生以下结果:

{"rates":[{},{},{},{},{},{}],"discounts":[{},{},{},{}]} 

这是正确的费率和折扣数量,但由于某种原因它们都是空的。

4

2 回答 2

1

单程

var json = ko.toJSON({ rates: self.rates, discounts: self.discounts  });

或者使用 ko.mapping 插件,您可以在其中配置要包含的成员

于 2013-10-22T08:07:05.807 回答
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));
于 2013-10-22T08:13:26.463 回答