2016-10-22 1 views
0

Может ли кто-нибудь помочь мне с нижеследующим запросом?ng-repeat для обработки данных как объекта и массива

Иногда я получаю данные как JSONObject, и иногда я получаю данные как JSONArray во время ng-repeat, он будет работать только с JSONArray, но не с ситуацией JSONObject. Можете ли вы предложить мне что-то здесь?

Вот пример это покажет значение _serviceID только тогда, когда служба идет как массив, но это не будет работать, если раздел Service приходит как объект

<td class="features"> 
<span ng-repeat="indi in ServiceChanges.ServiceInstalls.Service">{{indi._serviceID}}<br></span> 
</td> 

Примечание: Я не хочу используйте ng-if, чтобы проверить длину, поскольку она влияет на позицию моего DOM в другом DIV. Есть ли какое-либо решение, отличное от такого подхода, как преобразование объекта в массив путем добавления фиктивных значений?

ответ

1

Вы можете преобразовать обратный ответ в массив в контроллере.

.controller(function ($scope) { 
    // code here 

    var serviceArray = []; 
    var response = angular.copy($scope.ServicesChanges.ServiceInstalls.Service); 

    if (angular.isObject(response)) { 
     serviceArray.push(response); 
     $scope.serviceArray = serviceArray; 
    } else if (angular.isArray(response)) { 
     $scope.serviceArray = response; 
    } else { 
     $scope.serviceArray = serviceArray; 
    } 

    // code here 
}); 

<td class="features"> 
    <span ng-repeat="indi in serviceArray">{{indi._serviceID}}<br></span> 
</td> 
+0

0 не работает Может у меня помощь – Batman

+0

@Batman какая часть не работает? какой результат вы получаете для '$ scope.serviceArray' после того, как вы реализовали выше код? – whyyie

+0

Петля переходит в другое условие, и когда я проверяю консоль, он показывает undefined – Batman