<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.2/css/bootstrap.min.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<h1>Como crear con Angular un select con grupos </h1>
<h3>Select de html</h3>
<p>El siguiente select presenta paises, agrupados por continente, utilizando estandar HTML</p>
<select>
<option>Seleccione un País</option>
<optgroup label="América">
<option>Panamá</option>
<option>Colombia</option>
<option>Argentina</option>
</optgroup>
<optgroup label="Europa">
<option>España</option>
<option>Italia</option>
</optgroup>
</select>
<hr>
<h3>Ahora lo crearemos con Angular a partir de una fuente de datos</h3>
<p>Tenemos un archivo json con la información de los paises y lo usamos para
poblar el select
</p>
<div ng-app="miapp">
<div class="dropdown" ng-controller="miCtrl">
<select class="btn btn-primary">
<option>Seleccione un País</option>
<optgroup label= "{{pais.continente}}" ng-repeat="pais in paises">
<option ng-repeat="n in pais.nombres" ng-click="informa(n)">{{n.nombre}}</option>
</optgroup>
</select>
<span>{{mensaje.texto}}</span>
</div>
</div>
<script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
<script src="http://code.angularjs.org/1.2.9/angular.js"></script>
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.2/js/bootstrap.min.js"></script>
<script src="script.js"></script>
</body>
</html>
/*(function() {
"use strict";
var $btnPais = $("#btnPais");
$("#menuPais li a ").click(function() {
var pais = $(this).text();
$btnPais.text(pais);
});
})();*/
var app = angular.module("miapp", []);
/*app.controller("miCtrl", function($scope) {
$scope.paises = [{
continente: "America",
nombres: [{
nombre: "Panamá",
codigo: "pa"
}, {
nombre: "Colombia",
código: "co"
}, {
nombre: "Argentina",
codigo: "ar"
}]
}, {
continente: "Europa",
nombres: [{
nombre: "España",
codigo: "es"
}, {
nombre: "Italia",
código: "it"
}]
}];
$scope.paisElegido = {
continente: "",
nombre: ""
};
});*/
app.controller("miCtrl",function($scope, $http){
$http.get('paises.json').success(function(data) {
$scope.paises=data;
});
$scope.mensaje= {texto:""};
$scope.informa = function(pais){
$scope.mensaje.texto="Ha seleccionado " + pais.nombre +
". Su código es: " + pais.codigo +".";
};
});
[
{
"continente": "America",
"nombres": [
{
"nombre": "Panamá",
"codigo": "pa"
},
{
"nombre": "Colombia",
"código": "co"
},
{
"nombre": "Argentina",
"codigo": "ar"
}
]
},
{
"continente": "Europa",
"nombres": [
{
"nombre": "España",
"codigo": "es"
},
{
"nombre": "Italia",
"código": "it"
}
]
}
]