我正在使用 AngularJS 并且在我的 Controller 中。我有 $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":[]}
]}
]}
]
在我的 Controller 中,我有类似的内容:
$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 的方法。正如您在上面看到的,如果有帮助的话,我可以使用下划线。
谢谢!
最佳答案
我基本上理解你想做的是:
var obj = {
children:[]
}
obj.children.push({test:'Hello world'});
console.log(obj.children);//[Object { test="Hello world"}]
我说得对吗?
关于javascript - AngularJS 和 JSON - 添加子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21651728/