2015-11-20 5 views
0

Это мои данные JSON.Фильтровать данные JSON с помощью AngularJS и записаться с помощью ng-repeat с помощью смарт-таблиц

"ATTRIBS":{ 

      "WWW": 
      { 
       HIGH:10, 
       LOW:1, 
       NAME:World Wide Web, 
       TYPE:ON 
      }, 
      "NET": 
      { 
       HIGH:12, 
       LOW:1, 
       NAME: Local Net, 
       TYPE:OFF 
      } 
      } 

Я хочу перечислить эти JSON данные в таблице (я использую смарт-таблицы), где я только хочу перечислить данные, которые TYPE: OFF.

Я пробовал использовать фильтры в ng-repeat, но данные не заполняются.

Это код, я использую для перечисления в таблице:

<tr ng-repeat="(key, value) in offAttribs"> 

     <td>{{value.NAME}}</td> 
     <td>{{value.key}}</td> //I want abbreviations here i.e, www,NET..etc 
     <td>{{value.TYPE}}</td> 
     <td>{{value.LOW}}</td> 
     <td>{{value.HIGH}}</td> 

Это как мой контроллер выглядит, он загружает данные JSON из других служб.

Когда я использую offAttribs в ng-repeat, используя условие if в контроллере, он просто бросает ключ как (индексные числа 0,1,2 ...) вместо (ключи JSON, то есть WWW или NET ....),

редактировать ............. Рабочий код

$scope.offAttribs = []; 
    for (var key in attribData){ 
      attribData[key]['ABRV'] = key; 
      if (attribData[key].TYPE == 'OFF') { 
       $scope.offAttribs.push(attribData[key]); 
     } 
    } 
+0

Что появляется, когда вы добавляете div над ng-repeat? '' '

' '' – user2954463

+1

Вы пробовали фильтровать данные в контроллере и передать это 'ng-repeat'? Это может закончиться немного беспорядочно, если вы поместите всю логику в шаблон. – Ankh

+0

ng-repeat = "(key, value) in attribData | filter: {TYPE:" OFF "}" Вы попробовали это? – MayK

ответ

0

Я не думаю, что offAttribs имеет структуру данных, которые вы ожидаете. Синтаксис Angular's (key, value) in offAttribs будет работать только в том случае, если offAttribs является объектом. В вашем примере кода offAttribs - массив.

Если вы хотите получить доступ к ключу, как WWW или NET вам нужно offAttribs быть объектом:

$scope.offAttribs = {}; 

for (var key in attribData){ 
    if (attribData[key].TYPE == 'OFF') { 
     $scope.offAttribs[key] = attribData[key]; 
    } 
} 

TLDR; ключом массива является его индекс. поэтому вы получаете 0,1,2 вместо WWW, NET и т. д.

+0

Да! Он выполняет итерацию для всех значений «ВЫКЛ» и создает пустые поля (нет значения для HIGH, LOW NAME, TYPE ....) в таблице, тогда как у меня есть еще один , который попадает в список для всех поля. – Robus

+0

это отвечает на ваш вопрос? – user2954463

+0

Нет, это дает мне всю ценность {NAME TYPE LOW HIGH}, но я также хочу «WWW» «NET» в другом поле таблицы под аббревиатурой, поскольку объект сохраняется в $ scope.offattribs .... его устанавливает имя метки как 0,1,2,3 .... – Robus

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