我希望能够使用ng-repeat
来解析前端的响应。我无法使用ng-repeat
列表解析具有多个项目的响应而不是单个项目。
我能够解析;但我必须在前端创建2个不同的列表,并在前端添加单独的ng-repeat
配置,并添加一些丑陋的逻辑,以便在数组长度大于1时不显示。
我的目标是在我的部分中只有一个ng-repeat
元素,它处理两个响应或更好的方法来处理这个要求。
详细说明及以下jsfiddle 我想对这两个JSON响应使用这种ng-repeat设置。
<ul ng:repeat="report in reportConfigured.Reports">
<li ng:repeat="reportItem in report">{{reportItem.ReportName.$}}</li>
</ul>
以下是我的网络服务在有多个报告时的回复。
{
"Reports": {
"@xmlns": {
"$": "http:\/\/ws.wso2.org\/dataservice"
},
"Report": [{
"ReportID": {
"$": "20"
},
"ReportName": {
"@xmlns": {
"$": "null"
},
"$": "Examination Results"
},
"VisibleToPartner": {
"$": "false"
},
"ReportType": {
"@xmlns": {
"$": "null"
},
"$": "Examination Report"
},
"TemplateID": {
"$": "9"
}
}, {
"ReportID": {
"$": "163"
},
"ReportName": {
"@xmlns": {
"$": "null"
},
"$": "Scheduled Candidates with Test Center"
},
"VisibleToPartner": {
"$": "false"
},
"ReportType": {
"@xmlns": {
"$": "null"
},
"$": "Examination Report"
},
"TemplateID": {
"$": "220"
}
}, {
"ReportID": {
"$": "212"
},
"ReportName": {
"@xmlns": {
"$": "null"
},
"$": "Survey Report by Test"
},
"VisibleToPartner": {
"$": "false"
},
"ReportType": {
"@xmlns": {
"$": "null"
},
"$": "Examination Report"
},
"TemplateID": {
"$": "269"
}
}]
}
};
当只有一个报告
时,我的服务会收到此回复 {
"Reports": {
"@xmlns": {
"$": "http:\/\/ws.wso2.org\/dataservice"
},
"Report": {
"ReportID": {
"$": "212"
},
"ReportName": {
"@xmlns": {
"$": "null"
},
"$": "Survey Report by Test"
},
"VisibleToPartner": {
"$": "true"
},
"ReportType": {
"@xmlns": {
"$": "null"
},
"$": "Examination Report"
},
"TemplateID": {
"$": "269"
}
}
}
}
我希望能够使用相同的ng-repeat
解析这两个响应。我附上了一个jsfiddle以获取更多细节。
答案 0 :(得分:10)
在将其设置为ng-repeat
数据源之前,我会转换从服务器获得的内容:
$http({...})
.success(function(data){
if ( angular.isArray(data.Reports.Report) ) {
$scope.reports = data.Reports.Report;
}
else {
$scope.reports = [data.Reports.Report];
}
});
然后
<ul ng:repeat="report in reports">
<li ng:repeat="reportItem in report">{{reportItem.ReportName.$}}</li>
</ul>