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

+0

'$ scope' - это объект, а не массив. – Ronnie

ответ

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

Смежные вопросы