2014-10-06 149 views
1

我有一个范围变量jsonData如下:AngularJS动态范围变量

$scope.jsonData={id:'1234',abcd:{array:[{a:'data',b:'bdata',c:'cdata'},{a2:'a2data',b2:'b2data',c2:'c2data'}]},efg:{test:'testdata'}} 
在我的HTML

我有一个函数calladd('jsonData.abcd.array')用绳子

在我的js文件

我想一个JSON对象添加到arrayinside abcd JSON对象

$scope.add(data) { 
    $scope[data].push({a3:'a3data',b3:'b3data',c3:'c3data'}); 
} 

但我无法将数据推入数组。

+1

你不能超过1级深,这样的一个字符串 - 你需要解析出来,并执行实际的逻辑。 – tymeJV 2014-10-06 17:34:34

+0

'$ scope'是一个对象,而不是一个数组。 – Ronnie 2014-10-06 17:34:53

回答

0

如果你想获得ID,你可以做

var id = $scope.jsonData.id; 
//id = "1234" 

您可以使用相同的逻辑来添加或获取值

0

调用myobject['prop1.prop2.whatever']是行不通的。

你需要的是一个递归解析,如:

$scope.add = function(data, scope){ 
    scope = (typeof scope === "undefined") ? $scope : scope; 
    var datas = data.split('.'); 
    if(datas.length == 1){ 
     scope[datas[0]].push({ 
      a3: 'a3data', 
      b3: 'b3data', 
      c3: 'c3data' 
     }); 
    }else{ 
     var first = datas.splice(0,1); 
     $scope.add(datas.join('.'), scope[first]); 
    } 
}; 

And the fiddle