AngularJS - config不支持$ rootScope

时间:2014-06-04 10:32:30

标签: angularjs angular-translate

我在Angular JS中使用$translateProvider进行翻译,如下所示:

app.config(['$translateProvider', function($translateProvider) {
    $translateProvider.translations('en', {
        'RECHERCHE': 'Search',
        'RESULTATS': 'Results'            
    });
    $translateProvider.translations('fr', {
        'RECHERCHE': 'Recherche',
        'RESULTATS': 'Resultats'
    });
    $translateProvider.preferredLanguage('en');
}]);

效果很好。

现在,我想从数据库中获取我的数据(翻译字),所以当我从控制器中的数据库获取数据时,我尝试使用$rootScope来获取这样的数据(例如“游戏”一词:

app.config(['$translateProvider', function($translateProvider,$rootScope) {
    $translateProvider.translations('en', {
        'RECHERCHE': 'Search',
        'RESULTATS': 'Results',
        'GAME': $rootScope.gameEn
    });
    $translateProvider.translations('fr', {
        'RECHERCHE': 'Recherche',
        'RESULTATS': 'Resultats',
        'GAME': $rootScope.gameFr

    });
    $translateProvider.preferredLanguage('en');
}]);

它不起作用,任何人都可以帮助并告诉我如何从数据库中获取config中的数据吗?

1 个答案:

答案 0 :(得分:0)

配置的唯一可能参数是提供者。你不能将$ rootScope注入配置。

尝试这样的事情

angular.module(provider.translation').factory('localizationLoader', function ($http, $q, $locale) {

    return function (options) {
        var deferred = $q.defer();
        $http({
            method:'GET',
            url:'<Your url>'
        }).success(function (data) {
            deferred.resolve(data);
        }).error(function () {
            deferred.reject();
        });

        return deferred.promise;
    }
})

angular.module('provider.translation').config(function ($translateProvider) {
    $translateProvider.useLoader('localizationLoader', {});
})