如何应用ng-translate来翻译选择框内的选项。 例如:
模板:
<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:
{ "TXT_MALE": "Male", "TXT_FEMALE": "Female", }
我试过像这样添加过滤器,ng-options="gender.name for gender in genders | translate" 但很显然它是在向$scope.genders数组而不是单个元素添加过滤器
ng-options="gender.name for gender in genders | translate"
$scope.genders
我尝试编写自己的过滤器(对此我是陌生的)
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; } }])
但我得到以下错误
Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
这似乎是一个简单的任务,但已经用了我一半的时间,我在做什么错了:(
您需要将过滤器应用于gender.name而不是应用于genders数组:
gender.name
genders
<select ng-model="me.gender" ng-options="gender.name | translate for gender in genders"></select>
这是一个演示