angularjs - AngularJS - 如何在提供者中使用工厂
问题描述
我想知道如何在提供程序中使用工厂在配置中使用它。
由于我了解配置只能通过提供程序注入 - 我想知道如何实现以下功能
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
}]);
我已经尝试了许多我所描述的版本 - 但没有一个有效。
解决方案
不要附加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
服务将自动将Provider
后缀附加到配置对象。然后,配置对象将作为附加后缀.config
的服务名称注入到函数中。Provider
推荐阅读
- mediawiki-api - 通过 BotPasswords 登录并获取 HTML 页面内容的最简单方法
- linux - Raspian:在 eth0 上创建了多个 IP 地址
- python - 在 Python 中复制对象列表并保留其属性
- javascript - Google oauth2.0 与组织的网络应用程序?
- swift - Swift Vapor 3 从另一个内部调用路由器
- spring - 如何将 Zuul 与 Swagger 集成
- android - 即使数据库中存在数据,dataSnapShot.getValue() 也会返回 null
- java - 抽象通用对象类
- airflow - 我可以从每分钟运行一次的调度程序作业 DAG 创建一个临时参数化 DAG
- python - 使用 PyMuPDF 从 PDF 中提取完整的超链接字符串