Javascript 根据正确选择的单选按钮显示下拉列表 问题:

Javascript 根据正确选择的单选按钮显示下拉列表 问题:,javascript,html,angularjs,angularjs-ng-repeat,angular-directive,Javascript,Html,Angularjs,Angularjs Ng Repeat,Angular Directive,如何显示所有单选按钮,但仅显示一个下拉列表。显示的下拉列表反映了当前选择的radiobtn Html: <form ng-app="app" ng-controller="Ctrl"> <div class="color-pick" ng-repeat="(key, val) in productData.colors_and_sizes.data"> <input type="radio" name="colors" ng-model="

如何显示所有单选按钮,但仅显示一个下拉列表。显示的下拉列表反映了当前选择的radiobtn

Html:

<form ng-app="app" ng-controller="Ctrl">
    <div class="color-pick" ng-repeat="(key, val) in productData.colors_and_sizes.data">
        <input type="radio" name="colors" ng-model="myColor" ng-value="{{key}}" />{{key}}
        <div class="size-pick">
            <select ng-model="mySize" ng-options="size for size in val.sizes.split(',')"></select>
        </div>
    </div>
</form>
var app = angular.module("app", []);

app.controller('Ctrl', function ($scope, $filter, $http) {
 $scope.productData = {
  "colors_and_sizes": {
    "data": {
      "Black": {
        "sizes": "X Small, Small, Medium, Large, Xlarge, XX Large"
      },
      "Blue": {
        "sizes": "X Small, Small, Medium, Large, Xlarge, XX Large"
      }
    }
  }
};

});

在包装select语句的div上使用ng hide或show指令。您可能遇到的问题是,每个ng重复迭代都会创建自己的范围,这意味着您创建的每个ng模型都是完全独立的

您可以在此处看到:,当单击每个select radio时,它会在其下方打印一个不同的值,在这两种情况下,这都是正在设置的ng Model的值:

您可以通过使用$parent.property引用父范围而不仅仅是属性名称来修复此问题。这将为父控制器范围分配值,并按预期工作


{{key}}
myColor:{{myColor}}
mySize:{{mySize}}
您是否绑定到JSON格式?
<form ng-app="app" ng-controller="Ctrl">
    <div class="color-pick" ng-repeat="(key, val) in productData.colors_and_sizes.data">
        <input type="radio" name="colors" ng-model="$parent.myColor" ng-value="key" />{{key}}
        <div class="size-pick" ng-show="$parent.myColor==key">
            <select ng-model="$parent.mySize" ng-options="size for size in val.sizes.split(',')"></select>
        </div>
    </div>
    myColor: {{myColor}}<br/>
    mySize: {{mySize}}
</form>