AngularJS条件ng-option

时间:2016-11-03 18:40:45

标签: html angularjs ng-options angularjs-ng-options

我有一个应用角度,可以翻译法语和英语。我正在使用角度翻译来做到这一点。问题是:我从API接收了一个对象数组,在这些对象中,我有一个属性bookConditionEn和一个属性bookConditionFr以及其他类似ID。

在选择输入中,我想根据当前语言显示bookCondition

在控制器中,我可以使用$translate服务

获取当前语言
            vm.getCurrentLanguage = function() {
                return $translate.use();
            }

所以,我想知道在视图中我是否可以在ng-option中使用条件。

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

2 个答案:

答案 0 :(得分:1)

您可以通过更改创建 myList = [('Y:\\Resources\\Project 1', '2016-07'), ('Y:\\Resources\\Project 1', '2016-08'), ('Y:\\Resources\\Project 2', '2014-01'), ('Y:\\Resources\\Project 3', '2015-12'), ('Y:\\Resources\\Project 3', '2016-02'), ('Y:\\Resources\\Project 3', '2013-08'), ('Y:\\Resources\\Project 4', '2016-04')] 的方式来使用条件来显示/隐藏选项:

   newList = [('Y:\\Resources\\Project 1', '2016-08'),
              ('Y:\\Resources\\Project 2', '2014-01'),
              ('Y:\\Resources\\Project 3', '2016-02'),
              ('Y:\\Resources\\Project 4', '2016-04')]

我不太了解你如何设置你的JSON所以我假设你有一个包含语言的属性(bookCondition.language)。您可以将其与用户<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>

这应该是您以条件方式指定选项所需要做的全部。

答案 1 :(得分: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>