【发布时间】:2017-11-23 22:49:39
【问题描述】:
我有一个复杂的 JSON 对象,我必须从中循环遍历它并在表单中呈现数据。为此,我创建了一个像这样的小服务:
service.myApprovalResults = function(){
var url = "../data/myapprovals.json";
return $http.post(url).success(function(response) {
$rootScope.names = response;
});
};
以下是我的 JSON 文件:
{
"result": [
{
"Approval": {
"Id":"111", // Unique Id
"Api":"api/sometihgn/111"
},
"Ticket":{
"Id":"TKT1000011",
"API":"api/ticket/TKT1000011"
},
"TicketItem":{
"Id":"RITM1000011",
"API":"api/ticket_item/RITM1000011"
},
"ProcessStep":"",
"Description":"Need Approval For sdsadas", // See Note Section
"VariablesSet":// See Note Section
[ // VariableSet details.
{
"Question":"Joining Date",
"Name": "joining_date",
"Id":"13",
"Value": ["12:12:2014"],
"DisplayValue":[""],
"Reference":""
},
{
"Question":"Reporting Manager",
"Name": "reporting_manager",
"Id":"14",
"Value": ["samd"],
"DisplayValue":["/Sam Doni"],
"Reference":"/api/user"
},
{
"Question":"Department",
"Name": "department",
"Id":"15",
"Value": ["IT Security"],
"DisplayValue":[""],
"Reference":""
},
{
"Question":"Accessories Needed?",
"Name": "accessories",
"Id":"16",
"Value": ["laptop","mouse"],
"DisplayValue":[""],
"Reference":""
}
],
"ApprovalFor": {
"Name": "Sam Doni",
"UserName": "samd",
"Email":"samd@test.com",
"Api": "api/user/samd" // Api can be used to get more details
},
"Approver":{ // Optional
"Name": "sdsdsdsad",
"UserName": "sdsdsad",
"Email":"sadsads@dssdf.com",
"Api": "api/user/dssds" // Api can be used to get more details
},
"State": "Requested",
"Group": "",// Optional
"CreatedBy": {
"Name": "sadsdsddsa",
"UserName": "sdsd",
"Email": "sdsad@test.com",
"Api": "api/user/sadsadsa"
},
"CreatedOn": "2016-11-09T17:29:01Z",
"UpdatedOn": "2016-11-09T17:29:01Z",
"CommentsSet": [{
"Id": "10",
"TicketItem": "RITM1001011",
"Type": "approvalnote",
"Value": "User has issues related to access",
"CreatedOn": "2016-11-09T17:29:01Z",
"CreatedBy": {
"Name": "sdsdsadsadd",
"UserName": "dsdsad",
"Email":"sdsad@test.com",
"Api": "api/user/ssddsad"
}
},
{
"Id": "11",
"TicketItem": "RITM1001011",
"Type": "approvalnote",
"Value": "Issue is solved",
"CreatedOn": "2016-11-08T17:29:01Z",
"CreatedBy": {
"Name": "dsadsdsad
"UserName": "sdsadas",
"Email":"dsads@test.com",
"Api": "api/user/sadsadsadsa"
}
}
]
},
{
"Approval": {
"Id":"112",
"Api":"api/approval/112"
},
"Ticket":{
"Id":"TKT1000013",
"API":"api/ticket/TKT1000013"
},
"TicketItem":{
"Id":"RITM1000021",
"API":"api/ticket_item/RITM1000021"
},
"ProcessStep":"",
"Description":"Add user to Helpnow Group",// See Note Section
"VariablesSet":// See Note Section
[
{
"Question":"Location Service Needed",
"Name": "location",
"Id":"16",
"Value": ["11"],
"Reference":"/api/location";
},
{
"Question":"What is the issue",
"Name": "service_needed",
"Id":"18",
"Value": ["aloha"]
"DisplayValue":[""],
"Reference":""
}
],
"ApprovalFor": {
"Name": "dsfdsfdsf",
"UserName": "dfdsf
"Email":"dfdsfds@gmail.com",
"Api": "api/user/rsds// Api can be used to get more details
},
"Approver":"",
"State": "Requested",
"Group": {
"Name": "FIN Group",
"Id":"10"
"Api": "api/group/10"// Unique Group ID in SAP
}
}
]
}
使用这个 JSON,我需要循环并在表单中显示 JSON 数据。我在下面添加了以下代码:
<ul>
<li ng-repeat="x in names">
{{ x.result.Approval.Id }}, {{ x.result.Ticket.Id }}, {{x.result.TicketItem.Id}}, {{x.result.Description}}
</li>
</ul>
完成了上述操作,但我无法看到表单中的数据。
我检查了 chrome 开发者工具,并且 JSON 加载正确。 有人可以推荐我吗?
【问题讨论】:
-
ng-repeat 仅适用于 Array,不适用于 Object。
-
再次检查 JSON 响应是否有效
-
@Ved -
ng-repeat也可以处理对象。 -
@31piy ng-repeat with object 就是这样工作的。
(key,val) in object。所以从技术上讲,它只适用于 Array。