首页 > 解决方案 > AngularJS:基于两个单选按钮填充选择框

问题描述

我有 2 个单选组,每个组有 2 个单选按钮,年龄组(AG1,AG2)和语言(“一种语言”,“多语言”)。根据选中的单选按钮,我想用不同的选项填充选择框。所以有 4 种不同的组合 = 4 组不同的选项(4 个 AngularJS 范围属性)。我让它使用 ng-model 与一个无线电组一起工作,但我不知道如何用两个来做到这一点。我尝试使用 jQuery,但它不起作用,我被告知我不应该混合使用 AngularJS 和 jQuery。

HTML(ng-value这里明显不对,不知道设置什么值)

<div class="form-check">
   <input class="form-check-input" type="radio" name="AG" id="AG1" ng-model="values" ng-value="PD1E">
   <label class="form-check-label" for="AG1">4 - 5 years</label>
</div>
<div class="form-check">
   <input class="form-check-input" type="radio" name="AG" id="AG2" ng-model="values" ng-value="PD2M">
   <label class="form-check-label" for="AG2">6 - 7 years</label>
</div>

<div class="form-check">
   <input class="form-check-input" type="radio" name="language" id="one" ng-model="values" ng-value="PD1E">
   <label class="form-check-label" for="one">one language</label>
</div>
<div class="form-check">
   <input class="form-check-input" type="radio" name="language" id="multi" ng-model="values" ng-value="PD1M">
   <label class="form-check-label" for="multi">multilingual</label>
</div>
<br>
<select id="inputPD" class="form-control">
  <option ng-repeat="x in values">{{x}}</option>
</select>

AngularJS 范围属性

$scope.PD1E = [
        "1-one", "0,3", "0,5", "0,8", "1,8", "5,9", "12,8", "32,2", "58,8", "81,6", "100,0"
    ];

$scope.PD2E = [
        "2-one", "0,7", "0,9", "2,0", "7,9", "21,3", "41,5", "100,0"
    ];

$scope.PD1M = [
        "1-multi", "2,1", "3,5", "5,6", "12,5", "19,4", "33,3", "48,6", "61,8", "82,6", "95,8", "100,0"
    ];

$scope.PD2M = [
        "2-multi", "0,5", "2,2", "7,6", "23,8", "49,2", "70,3", "100,0"
    ];

所以如果我选择 AG1 + one,它应该在选择框中显示PD1E

AG2 + 一 = 显示PD2E

AG1 + multi = 显示PD1M

AG2 + multi = 显示PD2M

标签: angularjs

解决方案


一种方法是将ng-if指令与选项一起使用:

<select id="inputPD" ng-model="selectPD" class="form-control">
  <option ng-repeat="x in PD1E" ng-if="radio1=='1' && radio2=='E'">{{x}}</option>
  <option ng-repeat="x in PD2E" ng-if="radio1=='1' && radio2=='E'">{{x}}</option>
  <option ng-repeat="x in PD1M" ng-if="radio1=='2' && radio2=='M'">{{x}}</option>
  <option ng-repeat="x in PD2M" ng-if="radio1=='2' && radio2=='M'">{{x}}</option>
</select>

仅当<option>条件为 时才会添加元素true


推荐阅读