在执行此操作时遇到一些麻烦,我知道您需要使用$get
执行此操作,但我发现的示例并不完全属于我需要的结构。
我的提供商看起来像这样
.provider('moduleOb', function(){
var modules = {};
//outer closure to inject "this"
function outerAddState(moduleObj) {
};
//outer function so we can push into module
function modulePush(currentModule, name){
}
return {
goState: function(name, stateName, options) {
//I need to use this function in here which injected from a factory
checkUrl.requestUrl();
},
moduleConstructor: function(name, cb) {
},
$get: function $get() {
return this;
}
}
})
所以我现在只是在底部播种,你可以看到。我需要以某种方式注入checkurl
工厂,以便我可以在goState
中访问它。我如何格式化它以便我可以使用get来这样做?
因此,如果我将工厂分成一个单独的模块,我可以用
注入它 var injector = angular.injector(['urlParsing']);
var checkUrl = injector.get('checkUrl')
提供者内部的。但是,checkurl
函数依赖于$location
。因此,注射器现在找不到$location
-
Error: [$injector:unpr] Unknown provider: $locationProvider <- $location <- checkUrl
我可以注入位置提供商吗?这是最好的方法吗?
也许有一个get($ location)?或者也许有更好的解决方法。可以使用一些帮助,这一整天都在阻碍我!谢谢你的阅读。
Edit2:经过几天的摔跤 - 我意识到我只是在寻找如何将多个模块(一个工厂及它的$ log和$ location的依赖)注入一个提供者。真正的原因是我可以让人们设置我想要他们在.config中设置的内容。
我暂时通过将此提供程序更改为工厂并使用.run而不是.config来避免这种情况但我仍然希望能够使用.config。