javascript - AngularJS 和 JSON - 添加子对象

标签 javascript json angularjs rest

我正在使用 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/

相关文章:

javascript - 你如何用 Javascript 为 TypeScript Compiler 编写 JSDoc?

node.js - 将私钥存储在静态 Angular 站点上

java - 如何在 Kotlin 中解析 JSON?

java - Jersey 能否根据请求的 Accept header 将 GET 返回的 POJO 转换为 XML 或 JSON?

jquery - 使用 jQuery/Ajax 将 JSON 文件数据存储在 localStorage 中

javascript - AngularJS 文本建议文本框

javascript - 按字符串数组对对象数组进行排序

javascript - 如何使用 React Navigation 动态更改选项卡标题?

javascript - 使文本水平和垂直显示在 SPAN 的中心

javascript - 在没有 AJAX 的 jquery 提交调用之前执行 JavaScript 的方法?