2016-11-03 3 views
0

У меня есть приложение угловатое, которое можно перевести как на французском, так и на английском. Я использую угловой перевод, чтобы сделать это. Проблема в том, что я получаю массив объектов из API и в этом объекте, у меня есть свойство bookConditionEn и свойство bookConditionFr и другие подобные идентификаторы.AngularJS условный ng-option

В выбранном входе я хочу отображать bookCondition в зависимости от текущего языка.

В контроллере я могу получить текущий язык с $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> 
Смежные вопросы