如何在控制器内使用角度平移滤波器?

时间:2016-08-18 09:21:57

标签: angularjs

我已按如下方式设置了translateProvider:

angular.module('app')
    .config(['$translateProvider', function($translateProvider){
        $translateProvider.translations('en', {
             'HELLO' : 'Hello'
        });
        $translateProvider.translation('de', {
             'HELLO' : 'Hallo'
        });
        $translateProvider.prefferedLanguage('en');
 }])

我可以使用带有过滤器的表达式在HTML中翻译字符串,如:

{{ 'HELLO' | translate }}

显示'Hello'(或'Hallo',具体取决于首选语言设置)。

如何在Javascript中使用该过滤器,比方说,在控制器中?

我目前的做法不起作用:

angular.module('app')
    .controller('ExampleController', [ '$scope', '$translate'], function($scope, $translate){
        $scope.obj = {
             translatedString = $translate('HELLO')
        };
    });

因为它显示[object Object]而不是'HELLO'的翻译。

1 个答案:

答案 0 :(得分:0)

$ translate是异步的,它返回promise而不是翻译的字符串,因此它可以像这样使用:

$translate('HEADLINE_TEXT').then(function (translation) {
  $scope.translatedText = translation;
});

更多信息https://angular-translate.github.io/docs/#/api/pascalprecht.translate.$translate