2016-07-22 24 views
0

我試圖使用角度翻譯來翻譯從形式上形成的窗體上的選擇輸入數據,但我無法使其正常工作。以選擇形式使用角度翻譯

基本上,使用角轉換爲其他類型的輸入的時候,我會做一些像

'templateOptions.label': '"NAME" | translate', 
'templateOptions.placeholder': '"NAME" | translate' 

下面這個模式,我試圖把我的數據是這樣的:

"templateOptions.options": [ 
    { 
     "name": "{{ 'OPT1' | translate }}", 
     "id": 1 
    }, 
    { 
     "name": "{{ 'OPT2' | translate }}", 
     "id": 2 
    } 
] 

但是,這下拉菜單沒有給我什麼。有人可以在這裏給我任何指示嗎?

的完整源代碼的鏈接中找到http://output.jsbin.com/horawaqaki/

感謝您的幫助!

回答

1

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

+0

不錯的一個!謝謝 – kiosia