如何在 angularjs 中的选择框选项内进行 ng-translate [英] How to ng-translate inside select box option in angularjs
本文介绍了如何在 angularjs 中的选择框选项内进行 ng-translate的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何应用 ng-translate 来翻译选择框内的选项.
例如:
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:
{
"TXT_MALE": "Male",
"TXT_FEMALE": "Female",
}
我尝试添加过滤器,例如 ng-options="gender.name 用于性别中的性别 | 翻译"
但显然它是向 $scope.genders
数组而不是单个元素添加过滤器
I tried adding filter like ng-options="gender.name for gender in genders | translate"
but obviously it was adding filter to $scope.genders
array instead of single element
我尝试编写自己的过滤器(我是新手)
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;
}
}])
但是我遇到了以下错误
Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
看似简单的任务,却花了我半天时间,我到底做错了什么:(
推荐答案
您需要将过滤器应用于 gender.name
而不是 genders
数组:>
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-translate的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文