查询数据库并返回角度对象的正确方法是什么?

时间:2013-11-04 16:52:46

标签: angularjs

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

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

1 个答案:

答案 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()