Angular Translate在App.Config中设置变量

时间:2016-12-21 11:01:47

标签: javascript angularjs

我有一个安装了Angular Translate的Angular App。

这是我的app.js文件(只有感兴趣的部分):

.config(function($stateProvider, $urlRouterProvider, $ionicConfigProvider, $ionicFilterBarConfigProvider, $httpProvider, $translateProvider) {

    $translateProvider.translations('it', {       
        SEARCH: 'Cerca',
    })

    $translateProvider.translations('en', {       
        SEARCH: 'Search',
    })

    //... Various .state(...

});

//Translate config
$translateProvider.preferredLanguage('en');

$ionicFilterBarConfigProvider.placeholder("Search");

我需要做的是根据所选的翻译更改最后一行,"Search"必须从翻译中获取。

我试过这个:

var SRC_WORD = $filter('translate')('SEARCH');
$ionicFilterBarConfigProvider.placeholder(SRC_WORD)

不工作。

我也试过这个,但当然不在HTML中,所以它不会工作:

$ionicFilterBarConfigProvider.placeholder("{{'SEARCH' | translate }}")

没有运气,我在哪里做错了?

1 个答案:

答案 0 :(得分:0)

服务提供商($ionicFilterBarConfigProvider)仅在配置阶段可用,服务实例($ionicFilterBarConfig)仅在运行阶段可用。

这种分离的含义是配置阶段(config块)用于在实例化之前配置服务实例。

在某些情况下,可以将服务提供者公开为实例,以便在运行阶段动态配置它:

app.config(function ($provide, $ionicFilterBarConfigProvider) {
  $provide.value('$ionicFilterBarConfigProvider', $ionicFilterBarConfigProvider);
});

app.controller(..., function ($filter, $ionicFilterBarConfigProvider) {
  var SRC_WORD = $filter('translate')('SEARCH');
  $ionicFilterBarConfigProvider.placeholder(SRC_WORD)
});

此方法没有保修,完全取决于特定服务中发生的情况。