AngularJS从array1

时间:2016-07-29 00:47:36

标签: angularjs dropdown

我有像这样的JSON

{
    "cars":[
        {
            "id":"012",
            "model":"honda",
            "parts":[
                {
                    "id":"p1",
                    "name":"tyre",
                },
                {
                    "id":"p2",
                    "name":"muffler",
                }
            ]
        },
        {
            "id":"022",
            "model":"vw",
            "parts":[

            ]
        }
    ]
}

我是AngularJS的新手,我有2个下拉菜单,DROPDOWN1显示汽车模型如下:

DROPDOWN1
honda
vw

和DROPDOWN2应该在DROPDOWN1中加载选定汽车模型的零件。例如,如果我选择" honda"在DROPDOWN1中,DROPDOWN2应该加载:

DROPDOWN2
tyre
muffler

如果我选择" vw"在DROPDOWN1中,DROPDOWN2将不会加载,因为大众没有任何部件。

我有html这样的2个选择(下拉列表),请注意我使用 ng-options 而不是重复

<p><strong>Select a car</strong></p>
<select 
    required
    ng-change="selectCarAction()"
    ng-model="selectCar" 
    ng-options="car.model for car in cars track by car.id">
  <option value="" label="Select a car"></option>  
</select>

<p><strong>Select a part</strong></p>
<select 
    required
    ng-model="selectPart" 
    ng-options="part.name for part in parts track by part.id">
  <option value="" label="Select a part"></option>  
</select>

在我的js文件中,我得到了我的汽车响应数据,如:

      $scope.myData= JSON.stringify(myresponse.data);
      $scope.cars= myData.data.cars; 

,然后我有选择汽车的功能,一旦我选择了汽车,我的目的是加载DROPDOWN2:

$scope.selectCarAction = function(){
  if ($scope.selectCar == null){
    console.log("You selected car: N/A");
  } else {
    console.log("You selected car: " + $scope.selectCar.model);
    $scope.parts= $scope.selectCar.parts;    
  }
};

当我的DROPDOWN1加载正常时,我的DROPDOWN2从未被加载,但在上面的js函数中,我的$ scope.parts获取了部分。如何将这些加载到我的DROPDOWN2中?

1 个答案:

答案 0 :(得分:0)

修正了原帖。我正在使用&#34;参与car.part&#34;而不是&#34;参与部分&#34;在我上面的ng-option中。这解决了这个问题。