2017-02-22 15 views
0

我在angularjs动态加成

var list = [{id: 'foo' , value:'bar1'}, 
{id: 'foo1' , value:'bar1'}]; 

对象数组我要添加的子对象为等于“富”

格式化JSON第一id数据:

[ 
    { 
     "id":'foo', 
     "value":'bar1', 
     "children":{ 
     id:'foo', 
     value:'baar' 
     } 
    }, 
    { 
     "id":'foo1', 
     "value":'bar1' 
    } 
]; 

我已经试过

var tempList = {id:'foo', value:'baar'}; 

if(list.id =='foo') 
list.id.children = tempList ; 

但它不是插入值

回答

0

你有foreach这样做,如果你是匹配的父目录的ID和子女名单,然后使用此 -

angular.forEach(list , function(value, key){ 
     if(value.id== tempList.id) 
     obj.children = tempList ; 
    }); 

希望它会工作

1

使用map函数添加属性对象

var list = [ 
 
    {id: 'foo' , value:'bar1'}, 
 
    {id: 'foo1' , value:'bar1'} 
 
]; 
 
    
 

 
var tempList = {id:'foo', value:'baar'}; 
 

 
list = list.map(function(obj){ 
 
    if(obj.id =='foo'){ 
 
    obj.children = tempList ; 
 
    } 
 
    
 
    return obj 
 
}) 
 
console.log(list)

0

试试这个,但是这将覆盖id的值:

var list = [{id: 'foo' , 
     value:'bar1'}, 
     {id: 'foo1' , 
     value:'bar1'}]; 

var tempList = {id:'foo', value:'baar'}; 

list = list.map(function(obj){ 

if(obj.id == 'foo') 
{ 
    delete obj.id; 
    obj.id = {}; 
    obj.id.children = tempList ; 
} 

return obj; 
}); 

console.log(list); 
0

观察:if(list.id == 'foo')是无效的语法list是对象的数组。

所以,你可以像这样访问这个id list[index].id而不是list.id

因此,要迭代列表数组,您可以使用JavaScript for...in循环。

DEMO

var list = [{id: 'foo' , value:'bar1'}, 
 
{id: 'foo1' , value:'bar1'}]; 
 
    
 
for (var i in list) { 
 
    if(list[i].id =='foo') { 
 
    list[i].children = { 
 
     id:'foo', 
 
     value:'baar' 
 
     }; 
 
    } 
 
}; 
 
    
 
console.log(list);