2015-06-08 3 views
2

У меня есть следующий код JS:Итерация по каждому объекту в массиве

$http.get($rootScope.appUrl + '/nao/system/getUserBox/' + $routeParams['id']).success(function(data) { 
     $scope.userbox = data; 
    }); 

$ scope.userbox может содержать один или несколько объектов. В этом случае результат для пользователя только один объект:

Object { mac="00:22:07:2A:8D:4B", type="ZAP100", serial="D15024H12B034568", more...} 

То, что я хочу сделать, это распечатать Box для каждого объекта, а не свойство объекта, в результате массива.

Я попытался, как это:

<h5 class="bg-primary rmpad15" ng-repeat="userbox in userbox">Box</h5> 

Но этот результат в 19 рядов -элементов, которые для каждого свойства объекта, который неправильно. Если массив содержит только один объект, тогда я хочу напечатать ОДИН-элемент.

+1

Попробуйте добавить данные результата в массив, если это объект, а не массив. – Eylen

+0

@Eylen: Спасибо Эйлен :) – Bryan

ответ

2

Вы можете проверить возвращаемое значение для arrayness и завернуть его в массив, если он является объектом:

$scope.userbox = Array.isArray(data) ? data : [ data ]; 

Этот подход должен работать в Internet Explorer 9 и более поздней версии. Если по какой-либо причине вам нужна поддержка Array.isArray в более ранних версиях IE, вы можете polyfill it.

0

Если вы убедитесь, что бэкэнд всегда возвращает один или несколько объектов в массиве, вы должны быть золотыми!

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