使用工厂在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 :(得分: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");