我正在尝试使用restful服务从服务中读取数据。 当我有一个 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"
}
}
对于此数据,我得到"无法读取未定义的属性'名称'。
删除了冗长的答案。我没有看到你的最后一个部分。您的多个返回都存储在一个数组中,而您的单个返回则不是。因此,单个对象的点访问不正确。
回应评论:同样,您应该真正格式化返回数据,使其始终在数组中,否则您可以执行以下操作:
$scope.ROAListItem = function(){
list = service.getROAList();
if(!Array.isArray(list)){
list = [list];
}
}
一个快速的解决方案是修改您的服务调用,如下所示:
$http.post(urlBase + '/' + 'getROAList', params)
.success(function (data) {
ROAList = data.item;
if (!angular.isArray(ROAList)) {
ROAList = [ ROAList ];
}
return ROAList;
})
但是,您的服务确实应该提供一致的行为,即使只有一个项目也返回数组。