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

使用过滤器的angularjs多语言数据绑定,angularjs,angularjs-filter,Angularjs,Angularjs Filter,我需要在我的网站两种语言。 对于更改标签文本,它非常有效 这是过滤器: var mi = angular.module('myApp'); mi.filter('lang', lang); function lang($rootScope) { var tables = { 'he': { 'Country': 'xyz:', }, 'en': { 'Country': 'country:'

我需要在我的网站两种语言。 对于更改标签文本,它非常有效

这是过滤器:

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>
}

并试图把它绑成这样:

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>

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

我并没有真正得到你所期望的。你不想发生什么事?还有一件事。也许你应该考虑用角度翻译来翻译?我从服务器上得到了两个字段,但我只想根据选择的语言显示其中一个字段,即值,而不是字段的名称。用我写的过滤器能做到吗?我还是不太明白。tables对象是从db中获得的?您想如何处理集合中的MI?什么是您的集合,什么是MI?这是我从服务器获取的数据:DataTable.Row[0]['TEXT\u HE']='12345'和DataTable.Row[0]['TEXT\u EN']='12345\u e'。当我用ng repeat循环遍历集合时,我想得到lang=he中的'12345',lang=en中的'12345_e'。也许这对你有帮助?
 <p ng-bind="MI['{{'MenuText'|lang}}']"></p>
'he':{
'MenuText':'TextHe'
},
'en':{
    'MenuText':'TextEN'
    }