我正在尝试使用restful service从服务中读取数据。当我有一个json对象时,我遇到了问题。这是我的代码:
服务代码:
var ROAList =[];
var promise = $http.post(urlBase + '/' + 'getROAList', params)
.success(function (data) {
ROAList = data.item;
return ROAList;
})
.error(function (data) {
ROAList = 'error';
return ROAList;
});
return promise;
在控制器中:
var list =[];
$scope.ROAListItem = function(){
list =service.getROAList();
}
在html中:
<div ng-repeat="roa in list()" ng-click ="selectROAitem(roa.soa.name)">
<div> {{roa.id}} </div>
<div> {{roa.soa.name}}</div>
这是我的json数据:
{"item": [
{
"id":"001",
"type":"001x2z"
"sao": {
"itemNo": "3",
"name": "001"
},
},
{
"id":"002",
"type":"002x2g"
"sao": {
"itemNo": "5",
"name": "006"
}
]}
它适用于多个项目,但我收到一个项目的错误。对于这个json数据:
{"item":{
"id":"001",
"type":"001x2z"
"sao": {
"itemNo": "3",
"name": "001"
}
}
对于这些数据,我发现无法读取属性&#39; name&#39;未定义的。
答案 0 :(得分:0)
删除了冗长的回答。我没看到你的最后一节。您的多个返回都存储在一个数组中,而单个返回则不存储。因此单个对象的点访问不正确。
回应评论:再次,您应该真正格式化返回数据,使其始终在数组中,但否则您可以执行以下操作:
$scope.ROAListItem = function(){
list = service.getROAList();
if(!Array.isArray(list)){
list = [list];
}
}
答案 1 :(得分:0)
快速解决方案是修改您的服务电话,如下所示:
$http.post(urlBase + '/' + 'getROAList', params)
.success(function (data) {
ROAList = data.item;
if (!angular.isArray(ROAList)) {
ROAList = [ ROAList ];
}
return ROAList;
})
但是,您的服务确实应该提供一致的行为,即使只有一个项目也会返回一个数组。