在項目中,我有一對夫婦的provider
S的我啓動如何在配置階段(角)
angular.module('myApp', [])
.config((barFooProvider, ....) => {
barFooProvider.setAPIPath = '/a/b/c';
...
});
期間初始化使用工廠正如你可以看到我在這裏定義的API路徑這是一個串。但是,我怎麼能設置一個工廠?或者是定義服務名稱並稍後使用$注入器的唯一方法?
在項目中,我有一對夫婦的provider
S的我啓動如何在配置階段(角)
angular.module('myApp', [])
.config((barFooProvider, ....) => {
barFooProvider.setAPIPath = '/a/b/c';
...
});
期間初始化使用工廠正如你可以看到我在這裏定義的API路徑這是一個串。但是,我怎麼能設置一個工廠?或者是定義服務名稱並稍後使用$注入器的唯一方法?
你只可以使用供應商在配置階段
換句話說供應商都在AngularJs配置
可能是這樣link將是有益的
商都可以在配置階段所使用的唯一的服務!
app.provider('test', function() {
// set default path
var APIPath = 'a/b/c';
function setAPIPath(path) {
APIPath = path;
}
});
angular.module('app', []).config(function(testProvider) {
// set path during config
testProvider.setAPIPath('x/v/b');
});
您可以使用$inject
屬性註釋(docs)對服務提供商的$get
方法:
myApp.provider('test', function() {
this.setFactoryName = function(name) {
this.$get.$inject = [name];
};
this.$get = function(factory) {
return {
getMessageFromFactory: function() {
return factory.msg;
}
};
};
// set default value
this.setFactoryName('myFactory1');
});
然後將其配置是這樣的:
myApp.config(function(testProvider){
testProvider.setFactoryName('myFactory2');
});
這種方式所需的工廠將在服務實例化時被注入您的提供者的$get
方法。
這是一個不錯的解決方案。我已經使用這樣的$注入器:'this。$ get = function($ injector){...}'。在我的情況下,依賴關係是可選的,這意味着您可以設置一個或幾個服務。據我所知,這不能解決你的問題,這是真的嗎? –
@JanancaScaljeri,是的,我想是的。 –