在这种情况下,您可以在控制器内部使用$translate
服务。此服务可以返回您翻译的值,但它是异步操作。因此,您应该在控制器中添加一些标志,以便仅在收到此翻译时才显示表单(在本例中,我将使用vm.areFieldGenerated
,然后用ng-if
显示/隐藏表单和元素)。
所以,基本上你应该通过本地化的按键阵列和$translate
服务将返回下列对象:
{
'NAME': 'Name',
'OPT1': 'Working!',
'OPT2': 'Working indeed!'
}
之后,你就可以使用这个值来定位你的领域标题或选项。
你生成领域和分配转换值的选项看起来像这样的功能:
// variable assignment
vm.env = getEnv();
vm.model = {};
vm.options = {formState: {}};
vm.areFieldsGenerated = false;
generateFields();
// function definition
function generateFields() {
$translate(['NAME', 'OPT1', 'OPT2']).then(function(translationData) {
vm.fields = [
{
key: 'item',
type: 'select',
templateOptions: {
valueProp: 'id',
labelProp: 'name',
options: [
{name:'Not working!', id: 1},
{name:'Not working indeed!', id: 2}
]
},
expressionProperties: {
'templateOptions.label': transationData['NAME'],
'templateOptions.options': [
{
name: translationData['OPT1'],
id:1
},
{
name: translationData['OPT2'],
id:2
}
]
}
}
];
vm.originalFields = angular.copy(vm.fields);
vm.areFieldsGenerated = true;
});
}
我创建工作示例here。
$translate
的更多示例在angular-translate.github.io上。
不错的一个!谢谢 – kiosia