用于多语言输入的`ng-repeat`中的动态“ng-model”

时间:2018-01-01 13:34:35

标签: angularjs angular-ngmodel multilingual

在我目前的多语言Angularjs应用程序中,我有一些输入,每种语言都有多个值( en,fa,ar 和...),如下所示:

HTML

<div ng-repeat="lang in languages">
   <label> {{'TITLE' | translate}}</label>
   <input class='form-control'
       type='text'
       name="title"
       ng-model="createModel.lang['title']">
</div>

<div ng-repeat="lang in languages">
   <label> {{'NAME' | translate}}</label>
   <input class='form-control'
       type='text'
       name="name"
       ng-model="createModel.lang['name']">
</div>

JS

$rootScope.languages  = ['en', 'fa', 'ar']; // array of languages 

意味着,我希望ng-model像这样:

en: 
  ng-model='createModel.en["title"]'
  ng-model='createModel.en["name"]'
fa: 
  ng-model='createModel.fa["title"]'
  ng-model='createModel.fa["name"]'
ar: 
  ng-model='createModel.ar["title"]'
  ng-model='createModel.ar["name"]'

最后我想要createModel

createModel: {
    'en': ['title': 'title1' , 'name': 'Jone'],
    'fa': ['title': 'عنوان1' , 'name': 'جان'],
    'ar': ['title': '...' , 'name': '...']
}

那么,我该怎么做?

1 个答案:

答案 0 :(得分:0)

更改

createModel.lang['title']

createModel[lang].title

(显然名称相同)。

另请注意,您的JS代码无效。它应该是

createModel: {
  'en': {'title': 'title1' , 'name': 'Jone'},
  'fa': {'title': 'عنوان1' , 'name': 'جان'},
  'ar': {'title': '...' , 'name': '...'}
}

数组以[开头。对象以{开头。