2016-11-03 7 views
0

フランス語と英語の両方で翻訳できるアプリの角を持っています。私はそれを行うために角翻訳を使用しています。問題は:私はAPIからオブジェクトの配列を受け取り、そのオブジェクトには、プロパティbookConditionEnとプロパティbookConditionFrと他のidのようなものがあります。AngularJS条件付きオプション

選択入力では、現在の言語によってbookConditionを表示します。ビューで、私はNG-オプションで条件を使用することができれば、コントローラで

、私は$translateサービスので

  vm.getCurrentLanguage = function() { 
       return $translate.use(); 
      } 

と現在の言語を取得することができ、私は疑問に思います。

<select 
     ng-options="bookCondition.BookCondition for bookCondition in bookCtrl.bookConditions" 
     ng-model="bookCtrl.bookConditions" 
     name="Condition" class="form-control" 
    ></select> 

答えて

1

あなたは<select>を作成する方法を変更することにより、/非表示オプションを表示するために条件文を使用することができます。

<select ng-options=ng-model="bookCtrl.bookConditions" name="Condition" class="form-control"> 
    <option 
     ng-repeat="bookCondition.BookCondition for bookCondition in bookCtrl.bookConditions" 
     ng-if="vm.getCurrentLanguage==bookCondition.language" 
    > 
</select> 

私は非常にあなたが私が想定していますあなたのJSONを設定しているか理解していませんでした言語(bookCondition.language)を含むプロパティがあります。これを現在選択されているユーザーの言語と比較して、vm.getCurrentLanguageが返します。ちなみに、私は、関数からちょうどこのような変数であることをことを変えることをお勧め:

vm.currentLanguage = $translate.use(); 

これは条件付きの方法でオプションを指定するために必要なすべてでなければなりません。

0

は、それはあなたの方法を働いた

   <select ng-model="bookCtrl.bookCondition" name="Condition" class="form-control"> 
        <option ng-if="bookCtrl.getCurrentLanguage() === 'en'" ng-repeat="bookCondition in bookCtrl.bookConditions" value="{{bookCondition}}">{{bookCondition.BookCondition}}</option> 
        <option ng-if="bookCtrl.getCurrentLanguage() === 'fr'" ng-repeat="bookCondition in bookCtrl.bookConditions" value="{{bookCondition}}">{{bookCondition.BookConditionFr}}</option> 
       </select>