【发布时间】:2014-02-08 20:56:46
【问题描述】:
我正在使用 AngularJS 并且在我的控制器中。我有我的 $scope.tree 变量来保存一个简单的 JSON 对象。我正在尝试构建一个嵌套树,数据来自几个休息调用。
在我的第一次 REST 调用之后,我成功地拥有了我的初始 $scope.tree 对象:
[
{"name":"Item 1 Name","id":"1","parentid":"","children":[]},
{"name":"Item 2 Name","id":"2","parentid":"","children":[]}
]
我进行了第二次 REST 调用并返回了 2 个元素:
{"name":"Item 3 Name","id":"3","parentid":"2","children":[]},
{"name":"Item 4 Name","id":"4","parentid":"2","children":[]}
我想将这些作为适当的孩子添加到第一次调用中以结束:
[
{"name":"Item 1 Name","id":"1","children":[]},
{"name":"Item 2 Name","id":"2","children":[
{"name":"Item 3 Name","id":"3","parentid":"2","children":[]},
{"name":"Item 4 Name","id":"4","parentid":"2","children":[]}
]}
]
第三次调用:
{"name":"Item 5 Name","id":"5","parentid":"3","children":[]},
{"name":"Item 6 Name","id":"6","parentid":"4","children":[]}
最终得到:
[
{"name":"Item 1 Name","id":"1","children":[]},
{"name":"Item 2 Name","id":"2","children":[
{"name":"Item 3 Name","id":"3","parentid":"2","children":[
{"name":"Item 5 Name","id":"5","parentid":"3","children":[]}
]},
{"name":"Item 4 Name","id":"4","parentid":"2","children":[
{"name":"Item 6 Name","id":"6","parentid":"4","children":[]}
]}
]}
]
在我的控制器中,我有类似的东西:
$scope.tree = {};
$scope.restcall1 = (results of restcall)
$scope.restcall2 = (results of restcall)
$scope.restcall3 = (results of restcall)
$scope.tree = $scope.restcall1;
现在我需要加入 $scope.restcall1 和 $scope.restcall2 所以我用 addCall2 方法构建了一个 treeBuilder 服务。
$scope.tree = treeBuilder.addBranch($scope.tree, $scope.$restcall1);
在treeBuilder服务中:
addBranch: function(branch, tree){
for (var i=0; i<branch.length; i++){
network = _.filter(tree, function(obj){
if(obj.id == branch[i].parentId){
obj.children.push(branch[i]);
}
});
}
return tree;
},
obj.children.push(new_branch);不起作用,我尝试了其他 10 种方法 - 我发现父对象很好,但找不到将分支添加到 parent.children 的方法。如您在上面看到的,如果有帮助,我可以使用下划线。
谢谢!
【问题讨论】:
标签: javascript json angularjs rest