Los últimos tutoriales de desarrollo web
 

AngularJS cuadros de selección


AngularJS le permite crear listas desplegables en base a los elementos de un array o un objeto.


Creación de un cuadro de selección Uso de NG-opciones

Si desea crear una lista desplegable, basado en un objeto o una matriz en AngularJS, se debe utilizar la ng-option Directiva:

Ejemplo

<div ng-app="myApp" ng-controller="myCtrl">

<select ng-model="selectedName" ng-options="x for x in names">
</select>

</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.names = ["Emil", "Tobias", "Linus"];
});
</script>
Inténtalo tú mismo "

NG-ng vs opciones de repetición

También puede utilizar el ng-repeat directiva para realizar la misma lista desplegable:

Ejemplo

<select>
<option ng-repeat="x in names">{{x}}</option>
</select>
Inténtalo tú mismo "

Debido a que el ng-repeat Directiva repite un bloque de código HTML para cada elemento de una matriz, que puede ser utilizado para crear opciones en una lista desplegable, pero el ng-options directiva fue hecho especialmente para el llenado de una lista desplegable con opciones, y tiene al menos una ventaja importante:

Menús desplegables hechos con ng-options permite que el valor seleccionado para ser un objeto, mientras que los menús desplegables hechos de ng-repeat tiene que ser una cadena.

¿Qué puedo usar?

Suponga que tiene una matriz de objetos:

$scope.cars = [
    {model : "Ford Mustang", color : "red"},
    {model : "Fiat 500", color : "white"},
    {model : "Volvo XC90", color : "black"}
];

El ng-repeat Directiva tiene sus limitaciones, el valor seleccionado debe ser una cadena:

Ejemplo

Usando ng-repeat :

<select ng-model="selectedCar">
<option ng-repeat="x in cars" value="{{x.model}}">{{x.model}}</option>
</select>

<h1>You selected: {{selectedCar}}</h1>
Inténtalo tú mismo "

Cuando se utiliza el ng-options directiva, el valor seleccionado puede ser un objeto:

Ejemplo

El uso de ng-options :

<select ng-model="selectedCar" ng-options="x.model for x in cars">
</select>

<h1>You selected: {{selectedCar.model}}</h1>
<p>It's color is: {{selectedCar.color}}</p>
Inténtalo tú mismo "

Cuando el valor seleccionado puede ser un objeto, que puede contener más información y su aplicación puede ser más flexible.

Vamos a utilizar el ng-options directiva en este tutorial.


El origen de datos como un objeto

En los ejemplos anteriores, la fuente de datos era una matriz, pero también se puede utilizar un objeto.

Suponga que tiene un objeto con pares de valores clave:

$scope.cars = {
    car01 : "Ford",
    car02 : "Fiat",
    car03 : "Volvo"
};

La expresión en el ng-options atributo es un poco diferente de los objetos:

Ejemplo

El uso de un objeto como la fuente de datos, x representa la llave, y y representa el valor:

<select ng-model="selectedCar" ng-options=" x for (x, y) in cars ">
</select>

<h1>You selected: {{selectedCar}}</h1>
Inténtalo tú mismo "

El valor seleccionado será siempre el valor en un par de valores teclado.

El valor en un par de valores teclado también puede ser un objeto:

Ejemplo

El valor seleccionado seguirá siendo el valor en un par de valores teclado, sólo que esta vez se trata de un objeto:

$scope.cars = {
car01 : {brand : "Ford", model : "Mustang", color : "red"},
car02 : {brand : "Fiat", model : "500", color : "white"},
car03 : {brand : "Volvo", model : "XC90", color : "black"}
};
Inténtalo tú mismo "

Las opciones de la lista desplegable no tiene ser la clave en un par clave-valor, sino que también puede ser el valor, o una propiedad del objeto de valor:

Ejemplo

<select ng-model="selectedCar" ng-options=" y.brand for (x, y) in cars">
</select>
Inténtalo tú mismo "