2016-04-27 2 views
0

Я пытаюсь отобразить значения из вложенного массива JSON в представлении, используя AngularJS.Доступ к значениям контроллера в поле зрения с помощью AngularJS

Я проверил вывод на консоли.log(), и объект JSON возвращается, как ожидалось. Но я хочу показать детали на мой взгляд. В частности, я хочу отображать их как все значения высокого уровня со связанными с ними уровнями подъязыка.

Вот мой app.js, который получает JSON и выполняет итерации по нему, чтобы получить все значения высокого уровня и связанные с ним элементы подуровня.

angular.forEach($scope.data, function(value, key) 
{ 
    // Gets the high level items - WORKING 
    console.log("Check Item Description: " + value.checkitemdesc); 

    angular.forEach(value.options, function(v, k) 
    { 
     // Gets the sub-level items - WORKING 
     console.log("Check ID: " + v.fleetcheckid); 
     console.log("Check Value Description: " + v.checkvaluedesc); 
    }); 
}); 

Я хочу, чтобы затем отобразить элементы высокого уровня в онсэне UI Switch in List Item Component

<ul class="list"> 
    <li class="list__item" ng-repeat="val in value"> 
    {{val.checkitemdesc}} <!-- NOT WORING HERE --> 
     <label class="switch switch--list-item"> 
      <input type="checkbox" 
       class="switch__input" 
       checked 
       onclick="modal.show('modal')"> 
      <div class="switch__toggle"></div> 
     </label> 
    </li> 
</ul> 

Как получить доступ к массиву значений, возвращаемый цикл Foreach? Я попытался создать массив внутри моего внешнего контура Foreach, а затем нажать каждое значение к нему, но получаю ошибку говоря значение было неопределенными

$scope.itemDescriptionArray.push(value.checkitemdesc); 
+1

Ваши данные находятся на 'scope.data', но в шаблонах, которые вы пытаетесь получить к нему, как будто это на' scope.value'. Измените это внешнее ng-repeat на '' val in data'', и вам должно быть хорошо идти. –

+0

Отлично, спасибо. Только после этого, как мне получить доступ к внутренним значениям forEach? Я попробовал ng-repeat = "checkValueDescriptions в value.options" в подобном списке, но не повезло. * схватывает соломинку * – heyred

+0

Если вы использовали 'val in data' во внешнем цикле, то каждый экземпляр цикла будет иметь имя переменной« val »- поэтому используйте' val.options'. –

ответ

1

Предположим, у вас есть эта иерархия:

$scope.items = { 
id1: { 
    foo: 'bar' 
} 
id2: { 
    foo: 'foo' 
} 
} 

и вы хотите итерировать его в шаблоне, вы бы в конечном итоге делает что-то вроде этого:

<ul ng-repeat="(id,item) in items"> 
    Item {{id}} 
    <li ng-repeat="(key,value) in item"> 
    {{key + '=>' + value}} 
    </li> 
</ul> 

Если вы хотите перебрать неассоциативный массив, то вы не нужно определять кортежи в шаблоне.

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