我创建了一个工厂,用于从我的服务器获取一组消息。它看起来像这样:
app.factory('messagesService', [
'$resource',
function($resource) {
var self = this;
self.service = $resource('/messages');
self.all = function() {
return self.service.query();
};
return {
all: self.all
};
}
]);
这样我可以从其他控制器运行messagesService.all()
。
然而,这是从服务器返回原始数据,我想首先处理数据。我是Angular的新手并试图理解正确的做事方式。
我想让我的服务返回一个更完整的Message对象。
我在想我会创建一个函数并将其包含在服务文件中,如下所示:
self.Message = function(data) {
var self = this;
self.author = data.author;
self.message = $sce.trustAsHtml(data.message);
};
然后在.query()中,我可以创建new Message(data)
个对象并返回其中的数组。这是正确的方法吗?我的self.Message应该封装在一个单独的模型文件中吗?
答案 0 :(得分:1)
查看$resource的最新版本。您可以注册一个“transformResponse”函数 - 我怀疑 - 是您想要的。 Angular 1.2有很多很棒的功能,值得升级(迟早会成为一个稳定版本)。
顺便说一句,我不明白你使用的原因var self = this;
不是那样:
app.factory('messagesService', ['$resource', function($resource) {
var messages = $resource('/messages'); // extra config necessary?
return {
all: messages.query
};
}]);
够好吗?服务API保持不变:messagesService.all()
。