在angularjs选择框中的选项里面如何NG-翻译 [英] How to ng-translate inside select box option in angularjs

查看:104
本文介绍了在angularjs选择框中的选项里面如何NG-翻译的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我如何申请NG-翻译翻译一个选择框里面的选项。结果
例如:

How do I apply ng-translate to translate options inside a select box.
For example:

模板:

<select class="form-control" ng-model="me.gender" ng-options="gender.name for gender in genders">
</select>

控制器:

$scope.genders = [{code: "M", name:"TXT_MALE"}, {code: "F", name:"TXT_FEMALE"}]

enUS.json:

enUS.json:

{
    "TXT_MALE": "Male",
    "TXT_FEMALE": "Female",
}

我尝试添加过滤器,比如 NG选项=,在性别gender.name性别|翻译
但显然它添加过滤器,以 $ scope.genders 数组,而不是单个元素

我试着写自己的过滤器(我是新来这个)

I tried writing own filter (I am new to this)

filter('translateArrayObj', ['$translate', '_', function($translate, _) {
  return function(arr) {
    var arr2 = [];
    angular.forEach(arr, function (value, key) {
      $translate(value.name).then(function(translation) {
        var obj2 = angular.copy(value);
        obj2.name = translation;
        obj2.code = value.code;
        arr2.push(obj2);
      });
    });
    return arr2;
  }
}])

但我得到了以下错误

But I got following error

Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!

这似乎是一个简单的任务,但它已经采取了我半天,我究竟做错了什么:(

推荐答案

您需要将过滤器应用于 gender.name 并没有给性别数组:

You need to apply the filter to gender.name and not to the genders array:

<select ng-model="me.gender" ng-options="gender.name | translate for gender in genders"></select>

这里是一个演示

这篇关于在angularjs选择框中的选项里面如何NG-翻译的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆