angular - 循环依赖
angular - circular dependency
我有史以来第一次遇到这个问题,我在努力找出原因以及如何解决它。
我有两个服务,service1 和 service 2,但显然,存在这样的循环依赖:
serv1 <- serv2 <- serv1
服务代码如下:
angular.module('service1', [])
.service 'serv1', ['$rootScope','$http','$location','serv2',
function ($rootScope, $http, $location, serv2){
serv2.doMyOtherThing(...)
}
]
服务 2 如下:
angular.module('service2', [])
.service 'serv2', ['$rootScope','$http','$location','serv1',
function ($rootScope, $http, $location, serv1){
serv1.doMyThing(...)
}
]
为什么会出现循环依赖?我该如何解决?
每个服务都是特定于某些东西的(serv1 各种实用程序和 serv2 数组实用程序),有时我需要同时使用这两者,但目前还不可能。
感谢您的帮助
使用第三个服务,在其他服务中使用第三个服务。
示例:
angular.module('service1',[])
.service 'serv1' [..,'servCommon', function(..,servCommon){}]
angular.module('service2',[])
.service 'serv2' [..,'servCommon', function(..,servCommon){}]
angular.module('serviceCommon',[])
.service 'servCommon' [.., function(..){}]
在那个 servCommon
中添加一些常用函数并从其他两个中使用它们。
希望对您有所帮助。
如果你看到这个Miško Hevery's blog你就会明白:
...
.service 'serv1', ['$rootScope','$http','$location','serv2'
.service 'serv2', ['$rootScope','$http','$location','serv1',
serv1需要serv2并且serv2需要serv1。这将训练循环依赖。
所以你可以使用第三方服务
或者您可以这样解决:
angular.module('service1', [])
.service 'serv1', ['$rootScope','$http','$location','serv2',
function ($rootScope, $http, $location, serv2){
serv2.doMyOtherThing(...)
}
]
angular.module('service2', [])
.service 'serv2', ['$rootScope','$http','$location','$injector',
function ($rootScope, $http, $location, $injector){
var serv1 = $injector.get('serv1');
serv1.doMyThing(...)
}
]
我有史以来第一次遇到这个问题,我在努力找出原因以及如何解决它。
我有两个服务,service1 和 service 2,但显然,存在这样的循环依赖:
serv1 <- serv2 <- serv1
服务代码如下:
angular.module('service1', [])
.service 'serv1', ['$rootScope','$http','$location','serv2',
function ($rootScope, $http, $location, serv2){
serv2.doMyOtherThing(...)
}
]
服务 2 如下:
angular.module('service2', [])
.service 'serv2', ['$rootScope','$http','$location','serv1',
function ($rootScope, $http, $location, serv1){
serv1.doMyThing(...)
}
]
为什么会出现循环依赖?我该如何解决?
每个服务都是特定于某些东西的(serv1 各种实用程序和 serv2 数组实用程序),有时我需要同时使用这两者,但目前还不可能。
感谢您的帮助
使用第三个服务,在其他服务中使用第三个服务。
示例:
angular.module('service1',[])
.service 'serv1' [..,'servCommon', function(..,servCommon){}]
angular.module('service2',[])
.service 'serv2' [..,'servCommon', function(..,servCommon){}]
angular.module('serviceCommon',[])
.service 'servCommon' [.., function(..){}]
在那个 servCommon
中添加一些常用函数并从其他两个中使用它们。
希望对您有所帮助。
如果你看到这个Miško Hevery's blog你就会明白:
...
.service 'serv1', ['$rootScope','$http','$location','serv2'
.service 'serv2', ['$rootScope','$http','$location','serv1',
serv1需要serv2并且serv2需要serv1。这将训练循环依赖。
所以你可以使用第三方服务
或者您可以这样解决:
angular.module('service1', [])
.service 'serv1', ['$rootScope','$http','$location','serv2',
function ($rootScope, $http, $location, serv2){
serv2.doMyOtherThing(...)
}
]
angular.module('service2', [])
.service 'serv2', ['$rootScope','$http','$location','$injector',
function ($rootScope, $http, $location, $injector){
var serv1 = $injector.get('serv1');
serv1.doMyThing(...)
}
]