我想用自定義服務中的數據來裝飾角度$資源返回的數據。 我的代碼是:
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);
}
}
});
}]);
看來我做的關於依賴注入一些錯誤。從ServerConfig.get()返回的數據被標記爲未解析。 我得到了一個控制器,我做的改造與
ServerStatus.get(function(data) {$scope.mixinConfig(data);});
這個工作,但我寧願做在服務的裝飾。我該如何做這項工作?
'transformResponse'函數是否被調用?你使用的是什麼版本的Angular?你會發現一個簡約的例子在這裏實現響應裝飾:http://jsfiddle.net/YxTNL/1/ –
@LukasBünger感謝您的回覆。我想出了一個解決方案,並將其發佈到http://jsfiddle.net/maddin/7zgz6/ 我想在transformResponse中實現的是不可能的。我想我寫了一個正確的答案... – Maddin