Как читать JSON в Angularjs?

0

У меня есть следующий json:

{
"a1": [
"b1","b2"
],
"a2": [
"c1","c2","c3"
]
}

В моем контроллере я получаю json со следующим кодом:

$.getJSON('tk.json', function(data) {
$scope.$apply(function(){
$scope.modelData = data;
});
});

Я смотрю переменную, и когда она изменяется, я хочу получить конкретный список из json. Например:

$scope
.$watch(
'value1',
function() {
if ($scope.value1 != null)           
{                                                                         
var tempValue = $scope.value1;
$scope.data = $scope.modelData.temValue;           
console.log($scope.data);//undefined
}
});

Если значение равно a1, мне нужен список = ["b1", "b2"]. Со следующим значением $ scope.data = $ scope.modelData.temValue; Я получаю значение undefined для $ scop.data.

Как я могу прочитать json, чтобы найти правильный список? спасибо

  • 0
    Вы отладили и проверили, что возвращает вызов getJSON в параметре data?

1 ответ

1
Лучший ответ

Поскольку ваш объект $scope.modelData является объектом, вы должны получить доступ к его свойствам двумя способами:

  • Непосредственно: $scope.modelData.a1
  • По String: $scope.modelData['a1']

Итак, поскольку у вас есть переменная tempData, и это String, вы должны использовать:

$scope.data = $scope.modelData[tempValue];

Выполняя $scope.data = $scope.modelData.tempValue; как и вы, он попытается найти свойство с именем tempValue внутри переменной $scope.modelData, и это свойство не существует.

Вот почему ваша консоль регистрации undefined.

  • 0
    Большое спасибо!
  • 1
    @StavrosKouris, если мой ответ был полезен для вас, пожалуйста, нажмите на стрелку, чтобы проголосовать, и нажмите на V чтобы пометить его как принятый.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню