【发布时间】:2016-10-13 11:19:29
【问题描述】:
该错误发生在 .factory 函数中。在我的项目中,我有 2 个.factory,它们都相互使用。下面是我的控制器:
.controller('MyCtrl', function($scope, Factory_A) {
$scope.do = function(){
Factory_A.do_A();
};
})
场景 1:
.factory('Factory_A', function(Factory_B){
var value_A = 1;
return{
do_A: function(){
if(value_A == 1){
value_A++;
Factory_B.do_B();
}
else{
return "Success"
}
}
}
})
.factory('Factory_B', function(Factory_A){
var value_B = 0;
var do_B_1 = function(){
Factory_A.do_A();
};
return{
do_B: function(){
value_B++;
if(value_B > 0){
do_B_1();
}
return true;
}
}
});
错误:[$injector:cdep] 找到循环依赖:Factory_A
场景 2:
.factory('Factory_A', function(){
var value_A = 1;
return{
do_A: function(){
if(value_A == 1){
value_A++;
Factory_B.do_B();
}
else{
return "Success"
}
}
}
})
.factory('Factory_B', function(Factory_A){
var value_B = 0;
var do_B_1 = function(){
Factory_A.do_A();
};
return{
do_B: function(){
value_B++;
if(value_B > 0){
do_B_1();
}
return true;
}
}
});
错误:Factory_B 未定义
场景 3:
.factory('Factory_A', function(Factory_B){
var value_A = 1;
return{
do_A: function(){
if(value_A == 1){
value_A++;
Factory_B.do_B();
}
else{
return "Success"
}
}
}
})
.factory('Factory_B', function(){
var value_B = 0;
var do_B_1 = function(){
Factory_A.do_A();
};
return{
do_B: function(){
value_B++;
if(value_B > 0){
do_B_1();
}
return true;
}
}
});
错误:Factory_A 未定义
这里是 场景 3 的 demo,展示了我如何使用工厂模拟我的项目流程。谢谢。
【问题讨论】:
-
那么...问题是什么?只是不要创建相互依赖的服务。什么是 A 和 B 以及为什么他们应该使用彼此的方法并不明显。在 SO 上已经有很多关于这个主题的已回答问题,并且可能的解决方案的数量非常有限。
标签: angularjs ionic-framework factory