Ich habe .NET WCF-Dienst bietet REST-Dienst. Alles funktioniert für mich, bis ich versuche, Objekte mit verschachtelten Objekten zu senden. Dann bekomme ich nichts in angularjs. Wie kann ich verschachtelte Objekte für den Datenaustausch verwenden/darauf zugreifen?
.NET Service Teil:
[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 Struktur:
{
"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 Service:
angular.module('privilegeService', ['ngResource']).
factory('Privilege', function ($resource) {
return $resource('api/users/:userId/privileges', {userId: '@id'});
});
AngularJS Holen Teil:
function PrivilegesCtrl($scope, Privilege) {
$scope.privileges = Privilege.query({userId:2}); // privileges remains empty using nested objects, with one level object works fine
...
Warum Berechtigungen bleiben leer, wenn JSON Objekte verschachtelt hat? Und wie kann man auf verschachtelte Objekte in der Ansicht zugreifen?
Haben Sie in allen möglichen Entwickler-Tools wie Firebug oder Chrome Inspector überprüft, was der Server zurückgibt? –
Natürlich ist es der JSON-Strukturteil. Es ist die Serverantwort. – Fanda