Как добавить заголовок в выпадающий список (с демонстрацией ng-options)

Я хочу создать раскрывающийся список в AngularJS из файла JSON.
Как добавить заголовок для похожих элементов списка в раскрывающемся списке?
Например:

Малайзия (добавьте сюда заголовок)
--sunway
--subang
--petaling jaya
--shah alam
--Klang
--Subang Jaya
- -Setia alam
--sunway lagoon

Япония (добавьте сюда заголовок)
--tokyo
--osaka
--kyoto
--shinsabashi
--shinagawa


person Oceanus Teo    schedule 26.10.2015    source источник
comment
Можете ли вы предоставить код, пожалуйста?   -  person katmanco    schedule 26.10.2015


Ответы (4)


Предполагая, что ваш json выглядит примерно так

$scope.dropdown = [
    {
        name:'Malaysia',
        items: [
            {name: 'sunway', value: 1},
            {name: 'subang', value: 2},
            {name: 'petaling jaya', value: 3}
        ]
    },
    {
        name:'Japan',
        items: [
            {name: 'tokyo', value: 4},
            {name: 'osaka', value: 5},
            {name: 'kyoto', value: 6}
        ]
    }
]

это должно работать:

<select>
    <optgroup ng-repeat="header in dropdown" label="{{ header.name }}">
        <option ng-repeat="item in header.items" value="{{ item.value }}">{{ item.name }}</option>
    </optgroup>
</select>

ИЗМЕНИТЬ

демо: http://jsfiddle.net/jkrielaars/5wg9ejzg/

person JasperZelf    schedule 26.10.2015

Один из подходов заключается в использовании предложения group by в ng-options директива

Демо

angular.module("app",[])
.controller("ctrl", function($scope) {
    $scope.selection = null;
    $scope.options = [
            {country: 'Malaysia', name: 'sunway', value: 1},
            {country: 'Malaysia', name: 'petaling jaya', value: 3},
            {country: 'Japan', name: 'tokyo', value: 4},
            {country: 'Japan', name: 'osaka', value: 5},
            {country: 'Japan', name: 'kyoto', value: 6},
            {country: 'Malaysia', name: 'subang', value: 2},
    ];
})
<script src="//unpkg.com/angular/angular.js"></script>
  <body ng-app="app" ng-controller="ctrl">
    <pre>Selected value={{selection}}</pre>
    <br>
    <select ng-model="selection"
            ng-options="opt.value as opt.name group by opt.country
                        for opt in options">
      <option value="" disabled>Select City</option>
    </select>
  </body>

person georgeawg    schedule 24.06.2018

У меня было подобное требование. И вот как я это сделал:

Создайте два списка для хранения мест, один для Малайзии, а другой для Японии. В этом случае скажем, что это: vm.malaysia.list и vm.japan.list:

<select 
ng-model="yourmodelName" >
 <option value="">Please select</option>
 <optgroup label="Malaysia">
  <option ng-repeat="place in vm.malaysia.list" ng-value="place">{{place}}</option>
 </optgroup>

 <optgroup label="Japan">
  <option ng-repeat="place in vm.japan.list" ng-value="place">{{place}} 
  </option>
 </optgroup>
</select>

См.: Как отобразить разделы в раскрывающемся списке выбора с помощью anularjs. ?

person Praveesh P    schedule 13.07.2018

Я даю пример кода, например

<div class="container">
<h2>Dropdowns</h2>
<p>The .dropdown-header class is used to add headers inside the dropdown menu:</p>
<div class="dropdown">
<button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown">Tutorials
<span class="caret"></span></button>
<ul class="dropdown-menu">
  <li class="dropdown-header">{{xx-Dropdown header 1-xx}}</li>
  <li><a href="#">{{xx}}</a></li>
  <li class="divider"></li>
  <li class="dropdown-header">{{xx-Dropdown header 2-xx}}</li>
  <li><a href="#">{{yy}}</a></li>
</ul>
</div>
</div>

и я прилагаю ссылку, чтобы прочитать о http://www.w3schools.com/bootstrap/bootstrap_dropdowns.asp

Также здесь приведен рабочий код для ссылки на выпадающий заголовок

person SakthiSureshAnand    schedule 26.10.2015
comment
Код, работающий в режиме реального времени, использует jQuery и не работает с инфраструктурой AngularJS. Только операции, которые применяются в контексте выполнения AngularJS, получат выгоду от привязки данных AngularJS, обработки исключений, наблюдения за свойствами и т. д. - person georgeawg; 25.06.2018