Javascript 如何在angularJS中填充selectbox?

Javascript 如何在angularJS中填充selectbox?,javascript,angularjs,ng-options,Javascript,Angularjs,Ng Options,本文介绍如何使用angular JS设置下拉列表控件的选定选项 $scope.alltoys=[ { "dId": "570b886545034f0001718247", "dName": "Toys", "dSubName": "Comics", "users": [ { "name": "Superman", "id":

本文介绍如何使用angular JS设置下拉列表控件的选定选项

$scope.alltoys=[
       {
         "dId": "570b886545034f0001718247",
         "dName": "Toys",
         "dSubName": "Comics",
         "users": [
           {
                "name": "Superman",
                "id": "570b9e3a45034f000171827b"
           },
           {
                "name": "Batman",
                "id": "570ba00045034f000171828a"
           }]
       },
       {
        "dId": "5767c68c52faff0001fb8555",
        "dName": "Toys",
        "dSubName": "General",
        "users": [
           {
                "name": "Jack",
                "id": "570b9e3a45034f000171827b"
           },
           {
                "name": "Sparrow",
                "id": "570ba00045034f000171828a"
           }]
        }
]
如何使用angular js填充此选择框

我想这样填充

Toys-Comics
    Batman
    Superman
Toys-General
    Jack
    Sparrow
在这里玩具漫画和玩具一般是唯一的标题,选定的内容 我想在填充时对用户数组进行排序

<div class="controls">
    <select class="form-control" ng-model="toy"
        ng-options="eachtoy as eachtoy.dName+' - '+eachtoy.dSubName group by eachtoy for eachtoy in alltoys">
        <option value="">---------------Select---------------</option>
    </select>
</div>

---------------挑选---------------

我试过了,但不起作用。

有几处变化。首先,确保$scope.alltoys是一个集合(数组),如下所示:

$scope.alltoys = [{
  "dId": "570b886545034f0001718247",
  "dName": "Toys",
  "dSubName": "Comics",
  "users": [{
    "name": "Superman",
    "id": "570b9e3a45034f000171827b"
  }, {
    "name": "Batman",
    "id": "570ba00045034f000171828a"
  }]
}, {
  "dId": "5767c68c52faff0001fb8555",
  "dName": "Toys",
  "dSubName": "General",
  "users": [{
    "name": "Jack",
    "id": "570b9e3a45034f000171827b"
  }, {
    "name": "Sparrow",
    "id": "570ba00045034f000171828a"
  }]
}];
<select class="form-control" ng-model="toy">
  <option value="">---------------Select---------------</option>
  <optgroup ng-repeat="eachtoy in alltoys | orderBy: 'dName + dSubName" label="{{eachtoy.dName+' - '+eachtoy.dSubName}}">
    <option ng-repeat="user in eachtoy.users | orderBy: 'name'">{{user.name}}</option>
  </optgroup>
</select>
然后更改html以使用optgroup处理组,如下所示:

$scope.alltoys = [{
  "dId": "570b886545034f0001718247",
  "dName": "Toys",
  "dSubName": "Comics",
  "users": [{
    "name": "Superman",
    "id": "570b9e3a45034f000171827b"
  }, {
    "name": "Batman",
    "id": "570ba00045034f000171828a"
  }]
}, {
  "dId": "5767c68c52faff0001fb8555",
  "dName": "Toys",
  "dSubName": "General",
  "users": [{
    "name": "Jack",
    "id": "570b9e3a45034f000171827b"
  }, {
    "name": "Sparrow",
    "id": "570ba00045034f000171828a"
  }]
}];
<select class="form-control" ng-model="toy">
  <option value="">---------------Select---------------</option>
  <optgroup ng-repeat="eachtoy in alltoys | orderBy: 'dName + dSubName" label="{{eachtoy.dName+' - '+eachtoy.dSubName}}">
    <option ng-repeat="user in eachtoy.users | orderBy: 'name'">{{user.name}}</option>
  </optgroup>
</select>

---------------挑选---------------
{{user.name}

这里有一些有效的改动。首先,确保$scope.alltoys是一个集合(数组),如下所示:

$scope.alltoys = [{
  "dId": "570b886545034f0001718247",
  "dName": "Toys",
  "dSubName": "Comics",
  "users": [{
    "name": "Superman",
    "id": "570b9e3a45034f000171827b"
  }, {
    "name": "Batman",
    "id": "570ba00045034f000171828a"
  }]
}, {
  "dId": "5767c68c52faff0001fb8555",
  "dName": "Toys",
  "dSubName": "General",
  "users": [{
    "name": "Jack",
    "id": "570b9e3a45034f000171827b"
  }, {
    "name": "Sparrow",
    "id": "570ba00045034f000171828a"
  }]
}];
<select class="form-control" ng-model="toy">
  <option value="">---------------Select---------------</option>
  <optgroup ng-repeat="eachtoy in alltoys | orderBy: 'dName + dSubName" label="{{eachtoy.dName+' - '+eachtoy.dSubName}}">
    <option ng-repeat="user in eachtoy.users | orderBy: 'name'">{{user.name}}</option>
  </optgroup>
</select>
然后更改html以使用optgroup处理组,如下所示:

$scope.alltoys = [{
  "dId": "570b886545034f0001718247",
  "dName": "Toys",
  "dSubName": "Comics",
  "users": [{
    "name": "Superman",
    "id": "570b9e3a45034f000171827b"
  }, {
    "name": "Batman",
    "id": "570ba00045034f000171828a"
  }]
}, {
  "dId": "5767c68c52faff0001fb8555",
  "dName": "Toys",
  "dSubName": "General",
  "users": [{
    "name": "Jack",
    "id": "570b9e3a45034f000171827b"
  }, {
    "name": "Sparrow",
    "id": "570ba00045034f000171828a"
  }]
}];
<select class="form-control" ng-model="toy">
  <option value="">---------------Select---------------</option>
  <optgroup ng-repeat="eachtoy in alltoys | orderBy: 'dName + dSubName" label="{{eachtoy.dName+' - '+eachtoy.dSubName}}">
    <option ng-repeat="user in eachtoy.users | orderBy: 'name'">{{user.name}}</option>
  </optgroup>
</select>

---------------挑选---------------
{{user.name}


这里有一个使用order by?尝试使用mdMenu而不是drop的工作

down@KiranKumar我不明白。你能帮我吗?ji。你能理解我的问题吗?@LonelyPlanet我试过了,但我没有理解你的$scope.alltoys json不正确。(未格式化)尝试使用order by?使用mdMenu而不是dropdown@KiranKumar我不明白。你能帮我吗?ji。你能理解我的问题吗?@LonelyPlanet我试过了,但我没有理解你的$scope.alltoys json不正确。(未格式化)如何对标题和内容进行排序是肯定的。使用orderBy。。。我已经更新了我的答案,很好,你的答案很好,我是新来的。我想你在游泳这很好很好,不客气。你提出了一个写得很好、很简洁的问题,很容易帮助你。干得好!祝你好运。。。这是一个很好的框架。如何获得相应的选定玩具id我没有得到它?如何排序标题和内容是肯定的。使用orderBy。。。我已经更新了我的答案,很好,你的答案很好,我是新来的。我想你在游泳这很好很好,不客气。你提出了一个写得很好、很简洁的问题,很容易帮助你。干得好!祝你好运。。。这是一个伟大的框架。如何获得相应的选定玩具id我没有得到它?