Ich versuche, die zurückgegebenen Daten aus einem eckigen $ Ressource mit Daten aus einem benutzerdefinierten Service zu dekorieren. Mein Code ist:
angular.module('yoApp')
.service('ServerStatus', ['$resource', 'ServerConfig', function($resource, ServerConfig) {
var mixinConfig = function(data, ServerConfig) {
for (var i = 0; i < data.servers.length; i++) {
var cfg = ServerConfig.get({server: data.servers[i].name});
if (cfg) {
data.servers[i].cfg = cfg;
}
}
return data;
};
return $resource('/service/server/:server', {server: '@server'}, {
query: {
method: 'GET',
isArray: true,
transformResponse: function(data, header) {
return mixinConfig(angular.fromJson(data), ServerConfig);
}
},
get: {
method: 'GET',
isArray: false,
transformResponse: function(data, header) {
var cfg = ServerConfig.get({server: 'localhost'});
return mixinConfig(angular.fromJson(data), ServerConfig);
}
}
});
}]);
Es scheint, dass ich etwas falsch in Bezug auf Dependency Injection tue. Die von ServerConfig.get() zurückgegebenen Daten werden als nicht aufgelöst markiert. Ich habe diese Arbeit in einem Controller, wo ich die Transformation zu tun mit
ServerStatus.get(function(data) {$scope.mixinConfig(data);});
Aber ich würde eher die Dekoration in dem Dienst tun. Wie kann ich das schaffen?
Wird die Funktion 'transformResponse' aufgerufen? Welche Version von Angular verwenden Sie? Hier finden Sie ein minimalistisches Beispiel zur Implementierung der Antwortdekoration: http://jsfiddle.net/YxTNL/1/ –
@ LukasBünger Danke für Ihre Antwort. Ich habe eine Lösung gefunden und sie auf http://jsfiddle.net/maddin/7zgz6/ veröffentlicht. Was ich erreichen wollte, ist in transformResponse nicht möglich. Ich denke, ich schreibe eine richtige Antwort ... – Maddin