下拉列表2根据dropdown1

时间:2017-02-07 21:19:46

标签: javascript angularjs json

我有2个下拉列表,这是我的json,应该填充这些:

$scope.categorias = [
    {nome:"Blusa", tamanhos:["36","38","40","42","44","46","48","50"]},
    {nome:"Camisa",  tamanhos:["36","38","40","42","44","46","48","50"]},
    {nome:"Calça", tamanhos:["36","38","40","42","44","46","48","50","52","54","56","58","60"]},
    {nome:"Casaco", tamanhos:["36","38","40","42","44","46","48","50"]},
    {nome:"Sobretudo", tamanhos:["36","38","40","42","44","46","48","50"]},
    {nome:"Saia", tamanhos:["36","38","40","42","44","46","48","50","52","54","56","58","60"]},
    {nome:"Vestido", tamanhos:["36","38","40","42","44","46","48","50","52","54","56","58","60"]},
    {nome:"Blazer",tamanhos:["36","38","40","42","44","46","48","50","52","54","56","58","60"]},
    {nome:"Gravata", tamanhos:["36","38","40","42","44","46","48","50","52","54","56","58","60"]},
    {nome:"Camisa", tamanhos:["36","38","40","42","44","46","48","50","52","54","56","58","60"]},
    {nome:"leggins", tamanhos:["36","38","40","42","44","46","48","50","52","54","56","58","60"]},
    {nome:"Cueca", tamanhos:["36","38","40","42","44","46","48","50"]},
    {nome:"Sutiâ", tamanhos:["55","60","65","70","75","80","85","90"]},
    {nome:"Pijama", tamanhos:["36","38","40","42","44","46","48","50","52","54","56","58","60"]},
    {nome:"Chapeu", tamanhos:["46","48","50","52","54"]},
    {nome:"Gorro", tamanhos:["46","48","50","52","54"]},
    {nome:"Sapato", tamanhos:["18","20","22","24","26","28","30","32","34","36","38","40","42","44","46","48","50","52"]},
    {nome:"Oculos", tamanhos:["54","55","56","57"]},
    {nome:"Bolsa", tamanhos:["36","38","40","42","44","46","48","50"]},
    {nome:"Cachecol", tamanhos:["36","38","40","42","44","46","48","50"]},
    {nome:"Cinto", tamanhos:["36","38","40","42","44","46","48","50"]}
]

在第一个我只想要与名称相关的字符串,我这样做了:

<select class="form-control" name="categorias" ng-model="produtos.categoria" ng-options="option.nome as option.nome for option in categorias | orderBy:'nome' " >
                    <option value="">- Selecciona uma categoria -</option>
</select>

在第二个我想要的tamanhos与我在frist drop中得到的名字有关,

例如:在第一滴我得到Oculos所以当我点击drop1时我想要drop 2填充:“54”,“55”,“56”,“57”我举了最小的例子:d

所以我这样做了:

<div class="form-group">
                <label>Tamanho</label>
                <select class="form-control" ng-model="produtos.tamanho" ng-options=" produtos.categoria for option in categorias.tamanhos"></select>
            </div>

但不起作用:S需要一些帮助来弄明白:/

2 个答案:

答案 0 :(得分:0)

categoria的完整值设置为produtos.categoria,然后在第二个select中使用它。

<select
    name="categorias"
    ng-model="produtos.categoria"
    ng-options="categoria as categoria.nome for categoria in categorias"
>
    <option value="">- Selecciona uma categoria -</option>
</select>

<select
    ng-model="produtos.tamanho"
    ng-options="id in produtos.categoria.tamanhos"
></select>

P.S。:请在您的代码中使用英语,至少如果您在这里寻求帮助。谢谢:))

答案 1 :(得分:0)

您走在正确的道路上,您只需要使用第二个类别字段进行第二次选择绑定,而不是option.nome as option.nome,您应该使用option as option.nome

&#13;
&#13;
angular.module('myApp', []);

angular.module('myApp').controller('ctrl', function ($scope) {
  $scope.categorias = [
    {nome:"Blusa", tamanhos:["36","38","40","42","44","46","48","50"]},
    {nome:"Camisa",  tamanhos:["36","38","40","42","44","46","48","50"]},
    {nome:"Calça", tamanhos:["36","38","40","42","44","46","48","50","52","54","56","58","60"]},
    {nome:"Casaco", tamanhos:["36","38","40","42","44","46","48","50"]},
    {nome:"Sobretudo", tamanhos:["36","38","40","42","44","46","48","50"]},
    {nome:"Saia", tamanhos:["36","38","40","42","44","46","48","50","52","54","56","58","60"]},
    {nome:"Vestido", tamanhos:["36","38","40","42","44","46","48","50","52","54","56","58","60"]},
    {nome:"Blazer",tamanhos:["36","38","40","42","44","46","48","50","52","54","56","58","60"]},
    {nome:"Gravata", tamanhos:["36","38","40","42","44","46","48","50","52","54","56","58","60"]},
    {nome:"Camisa", tamanhos:["36","38","40","42","44","46","48","50","52","54","56","58","60"]},
    {nome:"leggins", tamanhos:["36","38","40","42","44","46","48","50","52","54","56","58","60"]},
    {nome:"Cueca", tamanhos:["36","38","40","42","44","46","48","50"]},
    {nome:"Sutiâ", tamanhos:["55","60","65","70","75","80","85","90"]},
    {nome:"Pijama", tamanhos:["36","38","40","42","44","46","48","50","52","54","56","58","60"]},
    {nome:"Chapeu", tamanhos:["46","48","50","52","54"]},
    {nome:"Gorro", tamanhos:["46","48","50","52","54"]},
    {nome:"Sapato", tamanhos:["18","20","22","24","26","28","30","32","34","36","38","40","42","44","46","48","50","52"]},
    {nome:"Oculos", tamanhos:["54","55","56","57"]},
    {nome:"Bolsa", tamanhos:["36","38","40","42","44","46","48","50"]},
    {nome:"Cachecol", tamanhos:["36","38","40","42","44","46","48","50"]},
    {nome:"Cinto", tamanhos:["36","38","40","42","44","46","48","50"]}
];
  
  $scope.log = function (cat) {
    console.log(cat);
  };
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="myApp">
  <div ng-controller="ctrl">
      <select class="form-control" name="categorias" ng-change="log(produtos.categoria)" ng-model="produtos.categoria" ng-options="option as option.nome for option in categorias | orderBy:'nome' " >
                    <option value="">- Selecciona uma categoria -</option>
</select>

<div class="form-group">
                <label>Tamanho</label>
                <select class="form-control" ng-model="produtos.tamanho" ng-options="v for v in produtos.categoria.tamanhos">
<option value="">- Selecciona tamanho -</option>
</select>
            </div>
  </div>
 </div>
&#13;
&#13;
&#13;