2016-11-03 5 views
0

Ich habe eine App eckig, die sowohl in Französisch und Englisch übersetzt werden kann. Ich benutze angular translate, um das zu tun. Das Problem ist: Ich erhalte ein Array von Objekt von einer API und in diesem Objekt habe ich eine Eigenschaft bookConditionEn und eine Eigenschaft bookConditionFr und andere ähnliche IDs.AngularJS bedingte ng-Option

In einem Select-Eingang möchte ich bookCondition abhängig von der aktuellen Sprache anzeigen.

Im Regler kann ich die aktuelle Sprache mit dem $translate Service

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

Also, ich frage ich, ob in der Ansicht, die einen Zustand im ng-Option nutzen könnte.

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

Antwort

1

Sie conditionals durch Änderung der Art und Weise/auszublenden Optionen anzuzeigen können Sie erstellen die <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> 

ich nicht ganz verstehen, wie Sie Ihre JSON so eingerichtet haben, gehe ich davon aus Sie haben eine Eigenschaft, die die Sprache enthält (bookCondition.language). Sie können dies mit der aktuell ausgewählten Sprache des Benutzers vergleichen, die von Ihrer vm.getCurrentLanguage zurückgegeben wird. By the way, schlage ich vor, dass von einer Funktion zu ändern, nur um eine Variable wie folgt aus:

vm.currentLanguage = $translate.use(); 

Dies sollte alles, was Sie brauchen zu tun, Optionen in bedingter Weise zu spezifizieren.

0

Es funktionierte Weg

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