4

2 つの質問:

1) angular-js を使用しており、データをモデル化する方法を探しています。バックボーンのモデルのアイデアの経験があります。これはAngularの工場ですか?基本的に「クラス」と「ファクトリー」を模倣して、多くのファクトリー(モデルのタイプごとに1つ)を持つことは「ベストプラクティス」ですか?

ファクトリは、いくつかの「ヘルパー」関数 (バックボーンのモデルなど) を持つモデルを表しますか、それともメンバーのリスト (バックボーンのコレクションなど) を表しますか?

2) たとえば、REST リソースにマップするオブジェクトを作成したいとします。GET で取得する「メンバー」リソースがあるとします: /members/123。これは、さまざまなフィールドを持つ json オブジェクトを返します。何かのようなもの:

{id: 123、名前: 'angularjs'、date_created: 1235845}

ここで、AngularJS アプリでこの「メンバー」オブジェクトを何らかの形で表現したいと考えています。この表現は、単なるフィールドのマッピングではありません。たとえば、date_create フィールドを人間が読めるものに変換する関数など、「ヘルパー」関数を追加したいと考えています。

これをどう表現するか。factory + $resource を使用

4

1 に答える 1

2

これは、あなたのケースで factory を使用する方法の良い例です。

工場

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 に答える