нг-повтор цикла через объект не ведет себя должным образом

0

В моем Angularjs ng-repeat есть только один объект, поля уменьшены, фактически у меня больше 40 в этом объекте. если у меня 40 полей, тогда 40 пустой вывод - рендеринг (см. ниже outout).

{"Name": "Raj", "Gender":"M", "Country": "India"} (ONLY ONE OBJECT)

Угловой вид

<table ng-repeat="emp in model.Employee">
<tr>
<td><strong>Name:</strong></td>
<td>{{emp.Name}}</td>
</tr>
<tr>
<td><strong>Gender:</strong></td>
<td>{{emp.Gender}}</td>
</tr>
</table>

Исключенный вывод

Name: Raj 
Gender: M

Но фактический вывод - рендеринг три раза без значения.

Name: 
Gender: 

Name: 
Gender: 

Name: 
Gender: 
  • 0
    И почему ng-repeat on table? Должно быть на tr .,
  • 0
    Что такое модель. Работник?
Теги:
angularjs-ng-repeat
ng-repeat

2 ответа

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

Это происходит потому, что вы повторяете объект вместо массива. Таким образом, цикл ngRepeat будет выполняться столько раз, сколько в вашем объекте есть ключи. Так как в объекте есть три ключа, цикл запускается трижды. Кроме того, emp (iterable) является ключом ("Имя", "Пол", "Страна") вместо полного объекта.

Изменить на:

[{"Name": "Raj", "Gender":"M", "Country": "India"}]
  • 0
    Вы правы, когда я бегу через консоль Chrome, я получаю правильный результат. тогда как преобразовать это значение в массив из какого-то другого источника?
  • 0
    Объявить пустой массив и вставить в него объект?
0

вы можете использовать (ключ, значение) для этой цели.

var app = angular.module("app",[])
app.controller('ctrl',['$scope', function($scope){
        $scope.data ={"Name": "Raj", "Gender":"M", "Country": "India"};
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.22/angular.min.js"></script>

<div ng-app="app" ng-controller="ctrl">
<div class="item item-checkbox">
      <table >
<tr ng-repeat="(key,value) in data" ng-if="key != 'Country'">
  <td>{{key}}</td>
<td>{{value}}</td>
</tr>
</table> 
</div>

Ещё вопросы

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