繁体   English   中英

AngularJS条件ng-option

[英]AngularJS conditional ng-option

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

在select输入中,我想根据当前语言显示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>

您可以通过更改创建<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.getCurrentLanguage 顺便说一句,我建议将其从函数更改为只是这样的变量:

vm.currentLanguage = $translate.use();

这是您有条件地指定选项所需要做的全部工作。

它按您的方式工作

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM