2016-10-22 17 views
0

任何人都可以通过以下查询帮助我吗?ng-repeat将数据作为对象和数组处理

有时我会将数据作为JSONObject获取,有时我会在ng-repeat期间以JSONArray的形式获取数据,它只能与JSONArray一起使用,但不能与JSONObject的情况一起使用。

这里的示例中,这将显示_serviceID的价值,只有当服务来作为一个数组,但如果服务部分来作为对象

<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

它不工作可以帮助我 – Batman

+0

@Batman哪部分不工作?在实现上面的代码之后,你得到了什么输出为'$ scope.serviceArray'? – whyyie

+0

该循环会去其他条件,当我检查控制台它显示undefined – Batman