2017-04-24 80 views
0

使用工廠在Angular中建立自我參考模式的正確方法是什麼?例如,如果我具有相同類型的對象的父 - 子關係:角度工廠自我參考

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

gah,我知道這很簡單!而不是試圖注入它並使用工廠,我只需要直接使用該對象:\謝謝!請提交答案,以便我可以標記爲已接受的答案:) – ossys

回答

3

您不能創建一個在構造函數中創建自己的對象。否則,你會得到一個無限循環。該對象應該將父項作爲構造函數參數,或者添加setter。

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");