我已經閱讀了大量的信息,使我不能有$http
調用內部的配置,但我可以做的就是創建自己的提供和使用此提供一個配置裏面。
但這一切我讀到展示如何實際使用聚集在API調用提供商config()
內部信息的主題。
所以我創建的提供是這樣的:
(function() {
'use strict';
angular
.module('app', [])
.provider('translateOwnProvider', Provider);
function Provider() {
this.$get = function($http) {
$http({
url: 'http://ipinfo.io/json',
method: 'GET'
})
.then(function(response) {
var homeCountry = response.data.country;
var homeCountryLower = homeCountry.toLowerCase();
console.log(response.data);
}, function(errorCall) {
console.log("error");
});
return homeCountryLower;
// ?????
};
};
})();
所以在23行我返回值(腳本的底部),我不知道它實際上是這樣做的好方法,它是第一個我試過這個,需要你的幫助。
接下來在配置文件命名爲真正的共同app.js
我有
- 路由
- 設置的用戶lenguage
代碼爲config:
(function() {
'use strict';
angular
.module('app', [
'ngRoute',
'pascalprecht.translate'
])
.config(config);
//$inject for minify issue
config.$inject = ['$routeProvider', '$translateProvider', 'translateOwnProvider'];
function config ($routeProvider, $translateProvider, translateOwnProvider) {
$routeProvider
.when('/', {
controller: 'mainCtrl',
templateUrl: 'views/main.html'
})
.otherwise('/');
// add translation tables
$translateProvider.translations('en', translationsEN);
$translateProvider.translations('de', translationsDE);
$translateProvider.translations('pl', translationsPL);
// preferredLanguage is gather should be gather in provider
$translateProvider.preferredLanguage('en');
$translateProvider.fallbackLanguage('en');
//fallbackLanguage in case somebody hides his IP
};
})();
在行28我設置了一個prefferedLenguage,我希望這是一個自己提供的價值der:homeCountryLower
。
目前,我沒有在控制檯的任何錯誤,但這並不明顯工作,頁面沒有加載在所有的,它保持空白。
*但這一切我看了展示如何實際使用中的供應商聚集在API調用的信息的配置裏面的主題()* - 因爲你不能。即使可以,這也會造成競爭條件,因爲HTTP請求是異步的。 – estus
因此,基於用戶IP設置優先用戶語言沒有解決方案嗎? – BT101
正如答案所示,使用路由解析器。 – estus