2016-11-03 1 views
0

J'ai une application angulaire qui peut être traduit à la fois en français et en anglais. J'utilise angulaire traduire pour le faire. Le problème est: Je reçois un tableau d'objet d'une API et dans ces objets, j'ai une propriété bookConditionEn et une propriété bookConditionFr et d'autres id comme.AngularJS conditionnel ng-option

Dans une entrée sélectionnée, je souhaite afficher bookCondition en fonction de la langue en cours.

Dans le contrôleur, je peux obtenir la langue en cours avec le service $translate

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

Alors, je me demande si dans la vue que je pouvais utiliser une condition dans le ng-option.

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

Répondre

1

Vous pouvez utiliser conditionals pour afficher/options masquer en changeant la façon dont vous créez le <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> 

Je ne comprends pas comment vous avez votre JSON mis en place afin je suppose vous avez une propriété qui contient la langue (bookCondition.language). Vous pouvez comparer cela avec la langue actuellement sélectionnée par l'utilisateur qui est renvoyée par votre vm.getCurrentLanguage. Soit dit en passant, je vous suggère de changer que d'une fonction d'être juste une variable comme ceci:

vm.currentLanguage = $translate.use(); 

Cela devrait être tout ce que vous devez faire pour spécifier les options de manière conditionnelle.

0

Il a travaillé votre chemin

   <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>