在這種情況下,您可以在控制器內部使用$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