2014-10-06 185 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