繁体   English   中英

AngularJS - 如何在提供程序中使用工厂

[英]AngularJS - how to use factory inside a provider

我想知道如何在提供程序中使用工厂在配置中使用它。

由于我了解配置只能通过提供程序注入 - 我想知道如何实现以下功能

app.provider('getUserLanguageProvider',['$injector', function($injector) {

    this.$get = function(getUserLang) {  // calling a factory 
    
        var userLang = getUserLang.getLang()
        return {
            getLang: function() {
                return userLang
            }
        }
    };

    
}]);

app.config(['$translateProvider', 'getUserLanguageProvider', function ($translateProvider, getUserLanguageProvider) {
     
    const lang = getUserLanguageProvider.getLang() // get the language key from provider

    $translateProvider.preferredLanguage(lang); // set the language key brought by getUserLang.getLang() factory
    
    
}]);

我已经尝试了许多我所描述的版本 - 但没有一个有效。

不要将 append Provider改为提供程序名称。 只需使用服务的名称:

̶a̶p̶p̶.̶p̶r̶o̶v̶i̶d̶e̶r̶(̶'̶g̶e̶t̶U̶s̶e̶r̶L̶a̶n̶g̶u̶a̶g̶e̶P̶r̶o̶v̶i̶d̶e̶r̶'̶,̶[̶'̶$̶i̶n̶j̶e̶c̶t̶o̶r̶'̶,̶ ̶f̶u̶n̶c̶t̶i̶o̶n̶(̶$̶i̶n̶j̶e̶c̶t̶o̶r̶)̶ ̶{̶  
app.provider('getUserLanguage',['$injector', function($injector) {

    this.$get = ['$http', function($http) {  // calling a factory       
        var userLang = getUserLang.getLang()
        return {
            getLang: function() {
                // ....
            }
        }
    }];    

}]);

$injector服务会自动将 append Provider后缀添加到配置 object 中。 然后,配置 object 将作为服务名称注入.config函数,并附加Provider作为后缀。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM