AngularJS: die Antwort auf "transform" in $Ressource unter Verwendung eines benutzerdefinierten service
Ich versuche zu schmücken, die zurückgegebenen Daten aus einer eckig $Ressource mit Daten aus einer benutzerdefinierten Dienst.
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, ich mache etwas falsch über dependency injection. Die zurückgegebenen Daten aus der ServerConfig.get() ist markiert als ungelöst.
Ich habe diese Arbeit in einem controller, wo ich die transformation mit
ServerStatus.get(function(data) {$scope.mixinConfig(data);});
Aber ich würde lieber die Dekoration in den Dienst. Wie kann ich diese Arbeit machen?
Hat die
Vielen Dank für Ihre Antwort. Ich habe herausgefunden, eine Lösung, und veröffentlicht es auf jsfiddle.net/maddin/7zgz6 Was ich wantet zu erreichen, ist es nicht möglich, transformResponse. Ich denke, ich Schreibe eine richtige Antwort...
transformResponse
Funktion aufgerufen? Welche version von Angular verwenden Sie? Finden Sie ein minimalistisches Beispiel für die Implementierung von response-Dekoration hier: jsfiddle.net/YxTNL/1Vielen Dank für Ihre Antwort. Ich habe herausgefunden, eine Lösung, und veröffentlicht es auf jsfiddle.net/maddin/7zgz6 Was ich wantet zu erreichen, ist es nicht möglich, transformResponse. Ich denke, ich Schreibe eine richtige Antwort...
InformationsquelleAutor Maddin | 2014-02-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist nicht möglich, mit dem transformResponse zu schmücken, die Daten mit Daten aus einer asynchronen service.
Ich postete die Lösung http://jsfiddle.net/maddin/7zgz6/.
Hier ist der pseudo-code erklärt die Lösung:
InformationsquelleAutor Maddin
Gut, es ist wirklich möglich zu schmücken, die Daten für eine Ressource asynchron, aber nicht mit der
transformResponse
Methode. Eininterceptor
verwendet werden soll.Hier ist eine schnelle Probe.
Können Sie jeden beliebigen service/Ressource anstelle von
$http
.Update:
Aufgrund der Art der Winkel ist $resource-interceptor implementiert ist der obige code nur schmücken die Daten zurückgegeben, die durch das $ - Versprechen und in einer Art und Weise bricht einige der $resource Konzepte, diese im besonderen.
Nur dies funktionieren wird.
InformationsquelleAutor Angel Yordanov