使用一个JSONObject和JSONArray进行Ng重复

时间:2016-10-12 17:57:01

标签: angularjs-ng-repeat

您好任何人都可以帮助我获得以下问题的解决方案

目前我从AngularJS获得JSON响应

  $scope.bepValues = $scope.aftCnv.Events.Event;

当我在事件标记中只有1个事件时,我在使用Ng-Repeat方面遇到了问题。但是当我在Events数组中获得超过1个事件时,同样有效。

<tr ng-repeat="list in bepValues">
<td class="features" >{{list.Body.WorkOrder.OrderStatus}}</td>

使用1Event的控制台日志值

Object {Header: Object, Body: Object}

Image with only 1 Event

控制台日志值超过1个EEPEvent

[Object, Object]

Image with more than 1 Event

1 个答案:

答案 0 :(得分:1)

您可以使用 ng-if 来检查它是否是数组。如果是数组,则使用 ng-repeat ,否则使用单个 tr 标记显示该值。

<tr ng-repeat="list in bepValues">
   <td class="features">{{list.Body.WorkOrder.OrderStatus}}</td>
</tr>
<tr ng-if="!bepValues.length">
    <td>{{bepValues.Body.WorkOrder.OrderStatus}}</td>
</tr>

修改

如果你有多个这样的情况,那么如果只有一个对象,则创建一个过滤器来返回数组:

MyApp.filter('formatArray', [function(){
    return function(array){
        if(angular.isUndefined(array.length)){ // Check for object type
            array = [array]; // Convert it into array of single object
        }
        return array;
    }
}]);

formatArray 过滤器添加到模板中:

<tr ng-repeat="list in bepValues | formatArray">
   <td class="features">{{list.Body.WorkOrder.OrderStatus}}</td>
</tr>

对象类型 ng-repeat 只会循环一次。