Angularjs使用自定义过滤器进行翻译

时间:2017-03-06 23:22:48

标签: javascript angularjs

这是一个从angularjs 1.2升级到1.6的旧项目,它使用常量,服务和过滤到翻译。 字符串在所有页面范围内都已正常翻译,但升级后无法正常工作。有关代码如何的示例:

app.js

.constant("config", {
    "translations": {
      'es': {
        'Default string': 'String por defecto',
      }
    }
});

service.js

return function(text) {
  var lang = $rootScope.lang;
  var langExists = typeof config.translations[lang] !== 'undefined';
  if (lang && langExists && config.translations[lang][text]) {
    return config.translations[lang][text];
  }
  return text;
};

filter.js

return function(text) {
  return translateService(text);
};

的index.html

        <div class="dropdown pull-right">
          <button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">
        {{ 'Default string' | translate }}   <span class="caret"></span></button>
          <ul class="dropdown-menu" style="cursor:pointer;">
            <li><a ng-href="#" ng-click="header.changeLanguage('es')">es</a></li>
            <li><a ng-href="#" ng-click="header.changeLanguage('en')">en</a></li>
          </ul>
        </div>

controller.js

var vm = this;

  vm.language = 'Select language';

  vm.changeLanguage = function(lang) {
    $rootScope.lang = lang;
  };

实际上,在这一点上,使用$ resource检索数据。

问题在于,当用户点击更改语言时,使用{{&#39; String&#39; |必须在所有范围内翻译翻译}}。在升级之前,这可行。

我的想法是,我无法理解为什么过去工作,因为过滤器没有被再次调用,并且范围没有连接抛出服务...... 如何刷新&#34;应用程序中使用自定义过滤器翻译的所有控制器和范围中的字符串?

0 个答案:

没有答案