1

我创建了一个工厂来从我的服务器获取一组消息。它看起来像这样:

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 是否应该封装在单独的模型文件中?

4

1 回答 1

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().

于 2013-11-04T17:18:44.173 回答