【发布时间】:2018-08-23 12:09:15
【问题描述】:
我有一个看起来像这样的数据列表:
"containers": [{
"Id": 1,
"Description": "B",
"Properties": {}
},
{
"Id": 2,
"Description": "A",
"Properties": {}
},
{
"Id": 3,
"Description": "B",
"Properties": {}
},
{
"Id": 4,
"Description": "A",
"Properties": {}
},
{
"Id": 5,
"Description": "C",
"Properties": {}
}]
使用敲除和敲除映射插件,我的目标是创建自定义映射以创建类似:
"containers": [{
"A":[{
"Id": 2,
"Description": "A",
"Properties": {}
},
{
"Id": 4,
"Description": "A",
"Properties": {}
}],
"B":[{
"Id": 1,
"Description": "B",
"Properties": {}
},
{
"Id": 3,
"Description": "B",
"Properties": {}
}],
"C"{
"Id": 1,
"Description": "C",
"Properties": {}
}]]
对象根据其描述分组为数组。
我尝试过这样的事情:
var mapping = {
create: function (options) {
var arrdata = [];
if (!(options.data.Description in arrdata)) {
arrdata[options.data.Description] = [];
}
arrdata[options.data.Description].push(ko.mapping.fromJS(options.data));
return arrdata;
}
}
但它只是它自己的数组中的每个对象,所以不是我在示例中期望的三个数组,而是 5 个数组,每个数组的大小为 1。如何告诉 Knockout Mapping 合并数组或创建完成此操作的映射?
【问题讨论】:
标签: javascript knockout.js knockout-mapping-plugin