4

两个问题:

1)我正在使用 angular-js,我正在寻找一种方法来为我的数据建模。我对主干模型的想法有经验。这是有角的工厂吗?拥有很多工厂(每种模型一个),基本上用“工厂”模仿“类”,这是一个好的“最佳实践”吗?

工厂用一些“帮助”功能代表我的模型(如 Backbone 上的模型)或我的工厂代表成员列表(如骨干上的集合)?

2) 例如,假设我想创建对象以映射到 REST 资源,并且我有一个通过 GET-ing 获得的“成员”资源:/members/123。这将返回一个带有各种字段的 json 对象。就像是:

{id:123,名称:'angularjs',date_created:1235845}

现在,我想在我的 AngularJS 应用程序中对这个“成员”对象进行某种表示。这种表示不仅仅是字段的映射——我想添加“帮助”函数,例如将 date_create 字段转换为人类可读的函数。

如何表示这一点?使用工厂 + $resource

4

1 回答 1

2

这是一个很好的例子,如何在您的情况下使用工厂。

工厂

angular.module('myApp').factory('Member', function($http) {
  // Member is a class which we can use for retrieving and 
  // updating data on the server
  var Member = function(data) {
    angular.extend(this, data);
  }

  // a static method to retrieve Member by id
  Member.get = function(id) {
    return $http.get('/Member/' + id).
      then(function(response) {
      return new Member(response.data);
    });
  };

  // an instance method to create a new Member
  Member.prototype.create = function() {
    var member= this;
    return $http.post('/Member/', member).then(function(response) {
      book.id = response.data.id;
      return member;
    });
  }

  return Member;
});

然后在控制器中,您可以编写如下内容:

控制器

var controller = function(Member) {

  var memeber= new Member();
  memeber.name = 'Fox';
  memeber.create();

  // to retrieve a memeber
  var memeberPromise = Memeber.get(123);
  memeberPromise.then(function(b) {
    memeber = b;
  });
};

这里我id只用过,但你了解流程

希望它可以帮助您解决问题

于 2013-10-22T09:53:56.097 回答