angularjs使用过滤器进行多语言数据绑定

时间:2014-10-21 11:16:23

标签: angularjs angularjs-filter

我的网站需要两种语言。 为了更改标签文本,它工作得很好

这是过滤器:

var mi = angular.module('myApp');
mi.filter('lang', lang);

function lang($rootScope) {
var tables =
    {
        'he': {
            'Country': 'xyz:',
        },
        'en': {
            'Country': 'country:',
        }

    };

return function (label) {
    return tables[$rootScope.Language][label];
};

}

这就是我使用它的方式:

<td>{{'Country'|lang}}</td>

另外,我从DB中获取两个字段(每种语言的每个字段):&#39; TEXT_HE&#39;和&#39; TEXT_EN&#39; 是否可以使用过滤器为数据绑定选择正确的字段?我试过这样:

function lang($rootScope) {
    var tables =
    {
        'he': {
            'bind_MenuText':'MI.TEXT_HE'
        },
        'en': {
            'bind_MenuText': 'MI.TEXT_EN'
        }

    };

return function (label) {
    return tables[$rootScope.Language][label];
};

}

并尝试将其绑定:

  <li ng-repeat="MI in collection">
      {{'bind_MenuText'|lang}}
  </li>

它并没有奏效。它按字面意思返回:&#39; MI.TEXT_HE&#39;和&#39; MI.TEXT_EN&#39;在HTML中。我相信我可以有条件地更改样式显示属性,但为此我必须在HTML中绑定太多不需要的数据。

修改

也许这会清楚我需要的东西: 这是html,我需要更改数据绑定的字段

 <p ng-bind="MI['{{'MenuText'|lang}}']"></p>

这就是&#39; lang&#39;:

'he':{
'MenuText':'TextHe'
},
'en':{
    'MenuText':'TextEN'
    }

当我第一次运行应用程序时,它可以工作。但是当我尝试改变语言时,它并没有

0 个答案:

没有答案