我想创建一个包含像这样的子实体的数组结构 - >
$scope.groups = [
{
"categories": [
{
"name": "PR",
"sortOrder": 0,
"type": "category"
}
],
"name": "DEPT 1",
"sortOrder": 0,
"type": "group",
"id": "-JY_1unVDQ5XKTK87DjN",
"editing": false
}
];
来自一个数组,该数组不具有子实体,但所有项目都列在一个对象中,如下所示 - >
$scope.groups = [
{
"name": "PR",
"sortOrder": 0,
"type": "category"
},
{
"name": "AD",
"sortOrder": 3,
"type": "category"
},
{
"name": "DEPT 2",
"sortOrder": 1,
"type": "group",
"id": "-JYZomQKCVseJmaZoIF9",
"editing": false,
"categories": []
},
];
有可能吗?
答案 0 :(得分:0)
当然是。 它在javascipt中是可行的,虽然为了帮助你设计一些我们需要类别之间关系的东西。
然而,这听起来像是应该在你的数据模型中完成的事情(dept - 类别,经典反身关系父母 - 孩子之间的关系)。 angular应该从后端接收已经订购的数组。
答案 1 :(得分:0)
正如@ Eagle1正确指出的那样。您需要正确定义数据模型以定义为您执行分组的函数。也就是说,根据我的理解,对于包含一些$scope.groups
的特定部门,您有一个categories
个对象数组,您需要将其合并为子元素。
您可以从定义一个返回像您提到的对象的函数开始:
var organize = function(arr){
cats = [];
dep = {};
$.each( arr, function( i, val ) {
if(val.type == "category")
cats.push(val);
else
dep = val;
});
dep.categories = cats;
return dep;
}
最终,您必须遍历数组并查找类型为category
的对象并将其转储到数组中,并将该数组作为要返回的对象的categories
键。我希望它能让你开始朝着正确的方向前进。