2017-04-24 19 views
0

角度を使用して工場で自己参照パターンを設定する適切な方法は何ですか?例えば、私は、オブジェクトの同じタイプの親子関係を持っている場合:角度工場の自己参照

angular.module('app.factories') 

.factory('PersonFactory', function(PersonFactory) { 

    function Person(name) { 
    this.name = name; 

    this.mom = new PersonFactory('Frank'); 
    this.dad = new PersonFactory('Sue'); 
    } 

    Person.prototype.getMom = function() { 
    return this.mom; 
    }; 

    Person.prototype.getDad = function() { 
    return this.dad; 
    }; 

    return Person; 
}); 

これは(明らかに)循環依存エラーを返しています。

+0

ガー、私はそれが何か簡単だと分かっていました!それを注入して工場を使うのではなく、オブジェクトを直接使用するだけです:\ありがとう!私は受け入れられた答えとしてマークすることができるように答えとして提出してください:) – ossys

答えて

3

コンストラクタで自身を作成するオブジェクトを作成することはできません。さもなければ無限ループになります。オブジェクトは、コンストラクタパラメータとして親を取るか、セッタを追加する必要があります。

function Person(name, father, mother) { 
    this.name = name; 
    this.father = father; 
    this.mother = mother; 
} 

var child = new Person("Timmy", new Person("Frank"), new Person("Sue"); 

Personは工場出荷時の宣言の中で直接使用できます。注入する必要はありません。

function Person(name, parent) { 
    this.name = name; 
    if(!parent) { 
     this.mom = new Person("Sue", true); 
    } 
} 

var child = new Person("Timmy");