【发布时间】:2014-03-22 13:51:25
【问题描述】:
我正在尝试使用来自自定义服务的数据来装饰从角度 $resource 返回的数据。 我的代码是:
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?你会在这里找到一个实现响应装饰的简约示例:jsfiddle.net/YxTNL/1 -
@LukasBünger 感谢您的回复。我想出了一个解决方案并将其发布到jsfiddle.net/maddin/7zgz6 我想要实现的目标在 transformResponse 中是不可能的。我想我写了一个正确的答案......
标签: javascript angularjs angular-resource angularjs-resource