$ translate.instant('身份证);语言更改时不更新

时间:2017-06-21 08:40:15

标签: angularjs angular-translate

我有一个角度应用程序,使用两种语言。我用过$ translate.instant('id');在我的控制器中绑定一些变量。但是当我使用$ translate.use('jp')更改翻译语言时;控制器变量不会改变。

我在HTML中使用了'translate'过滤器。那个会改变,但控制器变量不会改变。有没有办法实现它?

使用以下代码初始化。

$translateProvider.useStaticFilesLoader({
  prefix: '/translations/',
  suffix: '.json'
});
$translateProvider.preferredLanguage('en');
$translateProvider.fallbackLanguage('en');
$translateProvider
  .useSanitizeValueStrategy('escape');

在控制器中我使用了以下代码。     vm.userName = $ translate.instant('USER_NAME');

使用以下代码更改语言时

$translate.use('jp');

用户名不会更改。

1 个答案:

答案 0 :(得分:0)

当您调用$translate.instant('USER_NAME')

时语言文件未完全加载时会发生这种情况

在控制器上进行翻译也是不推荐,因为翻译只是一种表示(视图),不应该在控制器逻辑中处理。

如果你只想翻译userName,你可以这样做(假设你已经完成了):

<p>{{USER_NAME | translate}}</p>

以下SO问题中提到了对此问题的进一步研究:

Correct use for angular-translate in controllers

检查@PascalPrecht(角度翻译的作者)@ RobinvanBaalen的回答