我正在用AngularJS構建網站。我遇到了翻譯問題,得到了或多或少的解決方案,但我認爲它可以做得更好。AngularJS:加載異步翻譯問題
我有一個主控制器,它從數據庫加載翻譯。
$http.get($rootScope.ApiUrl + '/?a=sprache&lang=' + $rootScope.lang).success(function (data) {
$scope.spr = data;
$rootScope.translations = data;
$rootScope.updateTranslations();
});
數據是格式化的一個這樣的數組:
{key: "translation",…}
此外在I具有用於每個狀態的控制器。我希望它可以做這樣的事情:因爲這個代碼之前調用的GET請求還沒有完成,因此$ rootscope.translations變量沒有設置
app.controller('InventoryCtrl', [
'$scope',
'$http',
'$location',
'$state',
'$stateParams',
'$rootScope',
'$uibModalStack',
function ($scope, $http, $location, $state, $stateParams, $rootScope, $uibModalStack) {
$scope.title = $rootscope.translations.myTranslatedTitleForThisState
]);
顯然,這是行不通的。
而是我寫了下面的內容。在成功完成獲取請求後,updateTranslations()函數在MainController(上面)中的loadTransition()函數中調用。
app.controller('InventoryCtrl', [
'$scope',
'$http',
'$location',
'$state',
'$stateParams',
'$rootScope',
'$uibModalStack',
function ($scope, $http, $location, $state, $stateParams, $rootScope, $uibModalStack) {
$rootScope.updateTranslations = function() {
$rootScope.setMetaTags($rootScope.translations.inventory_title, $rootScope.translations.inventory_description);
$rootScope.updateTranslations();
}
}
]);
我很確定這可以做得更好。有任何想法嗎?