0

我有这个数据:

{
   "resources":{
      "animals":[
         {
            "id":"1",
            "value":"dog",
            "names":[
               {
                  "id":"1",
                  "value":"Carl"
               },
               {
                  "id":"2",
                  "value":"July"
               }
            ]
         },
         {
            "id":"2",
            "value":"cat",
            "names":[
               {
                  "id":"1",
                  "value":"Peter"
               },
               {
                  "id":"2",
                  "value":"Frank"
               }
            ]
         },
      ]
   }
}

我想要一个用户选择:首先是一个动物,然后选择一个名称(过滤动物 ID)。 获取结果中的 id。

我想到了这个例子:

<select ng-model="select.id_1" ng-options="a.id as a.value for a in resources.animals">
  <option value="">-- choose animal --</option>
</select>

<select ng-model="select.id_2" ng-options="...">
  <option value="">-- choose name --</option>
</select>

例如(选择猫和弗兰克):

select = 
{
    id_1: '2',
    id_2: '2'
}

我不知道第二个 ng-options 中放了什么代码。

在此示例中,有两个级别,n 级别会如何?

4

1 回答 1

1

ngOptions 不支持多维数组。

尝试这个:

<select ng-model="select.id_1" ng-options="a.id as a.value for a in resources.animals" ng-change="firstChange()">
  <option value="">-- choose animal --</option>
</select>

<select ng-model="select.id_2" ng-options="...">
  <option value="">-- choose name --</option>
</select>

在 JS 中,

$scope.firstChange = function(){
  $scope.Subarray = [];
  for(i=0; i<$scope.resources.animals.length; i++){
    if(select.id_1 == $scope.resources.animals[i].id){
      $scope.Subarray = $scope.resources.animals[i].names;
      break;
    }
  }
 }  

在第二个 ng 选项中使用 $scope.Subarray。

这是一个类似的问题,也许也试试这个。

于 2014-08-13T06:37:01.230 回答