Tôi có dịch vụ .NET WCF cung cấp dịch vụ REST. Mọi thứ hoạt động cho tôi, cho đến khi tôi cố gắng gửi đối tượng với các đối tượng lồng nhau. Sau đó, tôi không nhận được gì trong angularjs. Làm thế nào tôi có thể sử dụng/truy cập đối tượng lồng nhau để trao đổi dữ liệu?
NET dịch vụ phần:
[OperationContract] // route prefix 'api'
[WebGet(UriTemplate = "users/{id}/privileges", ResponseFormat = WebMessageFormat.Json)]
public PrivilegeSet GetPrivileges(string id)
{
var response = new PrivilegeSet();
List<Role> roles = new List<Role>();
roles.Add(new Role() { RoleId = 1, Name = "Role 1", Active = true });
roles.Add(new Role() { RoleId = 2, Name = "Role 2", Active = true });
roles.Add(new Role() { RoleId = 3, Name = "Role 3", Active = false });
response.Roles = roles;
List<SubRole> subRoles = new List<SubRole>();
subRoles.Add(new SubRole() { SubRoleId = 1, Name = "SubRole 1", RoleId = 1, Active = true });
subRoles.Add(new SubRole() { SubRoleId = 2, Name = "SubRole 2", RoleId = 1, Active = true });
subRoles.Add(new SubRole() { SubRoleId = 3, Name = "SubRole 3", RoleId = 1, Active = false });
response.SubRoles = subRoles;
return response;
}
JSON cấu trúc:
{
"Roles": [
{
"Active": true,
"Name": "Role 1",
"RoleId": 1
},
{
"Active": true,
"Name": "Role 2",
"RoleId": 2
},
{
"Active": false,
"Name": "Role 3",
"RoleId": 3
}
],
"SubRoles": [
{
"Active": true,
"Name": "SubRole 1",
"RoleId": 1,
"SubRoleId": 1
},
{
"Active": true,
"Name": "SubRole 2",
"RoleId": 1,
"SubRoleId": 2
},
{
"Active": false,
"Name": "SubRole 3",
"RoleId": 1,
"SubRoleId": 3
}
]
}
Angularjs dịch vụ:
angular.module('privilegeService', ['ngResource']).
factory('Privilege', function ($resource) {
return $resource('api/users/:userId/privileges', {userId: '@id'});
});
Angularjs lấy phần:
function PrivilegesCtrl($scope, Privilege) {
$scope.privileges = Privilege.query({userId:2}); // privileges remains empty using nested objects, with one level object works fine
...
Tại sao các đặc quyền vẫn trống khi JSON có đối tượng lồng nhau? Và cách truy cập các đối tượng lồng nhau trong khung nhìn?
Bạn đã kiểm tra tại bất kỳ công cụ dev như Firebug hoặc Chrome Inspector cho những gì các máy chủ đang trở lại? –
Tất nhiên, nó là phần cấu trúc JSON. Nó là đáp ứng của máy chủ. – Fanda