domingo, 24 de agosto de 2014

AngularJS (02) Directivas

Las directivas en AngularJS son atributos extendidos que comienzan con el prefijo ng-
Dentro de estas directivas podemos encontrar:
  • ng-app que inicializa la aplicación de AngularJS, que puede tener un valor para enlazarla a un modulo, como veremos más adelante.
  • ng-init que inicializa los datos de la aplicación
  • ng-model que recoge los datos de los diferentes inputs para la aplicación.
  • ng-repeat clona elementos html por cada elemento de una colección (array).
Hay que tener en cuenta que una web puede tener diferentes aplicaciones, y que para hacer que se ejecute la aplicación hay que inicializarla en un <div>, <article>...

En el siguiente ejemplo se puede observar como funciona una aplicación completa:
<!DOCTYPE html>
<html>
    <body>

        <div ng-app="" ng-init="algo='Mateoooo'">

            <p>Escribe algo en la caja:<input type="text" ng-model="algo"></p>

            <p>Has escrito: {{ algo }}</p>

        </div>

    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"></script>

    </body>
</html>

Primero podemos observar como se inicia la aplicación y se le da un valor inicial a la variable algo.
En segundo lugar aparece el input de tipo text donde recoge el valor con ng-model y finalmente como el propio script recoge la variable y la muestra utilizando {{ algo }}

Enlace de datos

Una aplicación de AngularJS no tiene por que tener una sola variable, como vemos en el siguiente ejemplo los datos pueden ser varios, siempre y cuando las variables se llamen de forma diferente:
<!DOCTYPE html>
<html>
<body>

    <div data-ng-app="">

        <h2>Calculo de coste</h2>

        Cantidad: <input type="number" ng-model="cantidad">
        Precio: <input type="number" ng-model="precio">

        <p><b>Total:</b> {{cantidad * precio}}</p>

    </div>

<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"></script>

</body>
</html>

Como se puede observar en este script, no hemos inicializado las variables (Ya que no es necesario), además hay dos variables que recogen su valor desde sendos ng-model que finalmente son utilizados para una expresión aritmética y calcular el total...

Repitiendo elementos de HTML

Un uso muy interesante en AngularJS es que se pueden añadir nuevos elementos html, como podemos ver en el siguiente ejemplo:
<!DOCTYPE html>
<html>
<body>

<div data-ng-app="" ng-init="nombres=['Pepe','Maria','Antonio', 'Paco']">
  <p>bucle con ng-repeat:</p>
  <ul>
    <li ng-repeat="x in nombres">
      {{ x }}
    </li>
  </ul>
</div>

<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"></script>

</body>
</html>

Se declara un array unidimensional y luego con la directiva ng-repeat se hace que x en nombres ponga un nuevo elemento <li> con la expresion {{ x }}

De hecho esto puede ir a más, utilizando arrays bidimensionales como en el siguiente ejemplo:
<!DOCTYPE html>
<html>

<body>

<div ng-app="" ng-init="nombres=[
    {nombre:'Jani',pais:'Norway'},
    {nombre:'Hege',pais:'Sweden'},
    {nombre:'Kai',pais:'Denmark'}]">

<p>Bucle con objetos:</p>
<ul>
  <li ng-repeat="x in nombres">
  {{ x.nombre + ', ' + x.pais }}</li>
</ul>

</div>

<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"></script>

</body>
</html>

Podemos ver como el array es recorrido  por su dos campos y mostrado en una lista, además podemos fijarnos de que en la expresión se coloca texto adicional, con + ', ' +


No hay comentarios:

Publicar un comentario