【发布时间】:2016-03-17 19:53:04
【问题描述】:
在我的 Angular 应用程序中,我使用 AngularTree 指令 (http://wix.github.io/angular-tree-control) 来呈现以下数据结构的树视图,如 https://jsfiddle.net/eugene_goldberg/Lvwxx629/17/ 所示:
$scope.subjectAreas = [
{
name: "Area-1",
link: "dashboards.dashboard_1",
entities: [
{
name: "entity 1"
},
{
name: "entity 2"
}
],
offerings: [
{
name: "offering 1"
},
{
name: "offering 2"
}
]
},
{
name: "Area-2",
link: "dashboards.dashboard_1",
entities: [
{
name: "entity 3"
}
],
offerings: [
{
name: "offering 3"
}
]
},
{
name: "Area-3",
link: "dashboards.dashboard_1",
entities: [
{
name: "entity 4"
},
{
name: "entity 5"
},
{
name: "entity 6"
}
],
offerings: [
{
name: "offering 4"
},
{
name: "offering 5"
}
]
}
];
这个 treeView 指令提供了“createSubTree”函数,我使用如下:
function createSubTree(ary) {
var res = [];
if (ary) {
res = ary.map(function(v, k) {
var id = k + 1;
return {
i: id,
id: 'id' + id,
label: v.name,
children: createSubTree(v.entities)
}
});
}
return res;
}
$scope.treedata = createSubTree($scope.subjectAreas);
输出如下:
Area-1
entity-1
entity-2
Area-2
entity-3
Area-3
entity-4
entity-5
entity-6
由于我的数据结构包含每个 SubjectArea(实体和产品)的两个嵌套数组,我需要有一个用于实体的子文件夹和一个用于作为每个 SubjectArea 子级的产品的子文件夹,因此输出应该看起来像这样:
Area-1
entities
entity-1
entity-2
offerings
offering-1
offering-2
Area-2
entities
entity-3
offerings
offering-3
Area-3
entities
entity-4
entity-5
entity-6
offerings
offering-4
offering-5
如何修改当前代码以使递归函数为实体和产品创建子组?
【问题讨论】:
-
其实很简单,您所要做的就是按照您查看数据的方式创建数据。试一试,如果您仍然需要帮助,请告诉我。如果我没记错的话,不需要更改代码。
-
我认为,每个 SubjectArea 都需要一个命名的顶级数组,但我正在努力以正确的方式实际包装它。
标签: javascript angularjs recursion