我正在用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();
}
}
]);
我很确定这可以做得更好。有任何想法吗?