Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tutorial Angular Js Openwebinars PDF
Tutorial Angular Js Openwebinars PDF
Presentacin
Desde
OpenWebinars te presentamos este prctico Tutorial de iniciacin de AngularJS, el
Framework Javascript impulsado por Google.
AngularJS en HTML
Qu es AngularJS?
Expresiones en AngularJS
Directivas de AngularJS
Expresiones de AngularJS
Nmeros de AngularJS
Arrays en AngularJS
Objetos en AngularJS
Directivas de AngularJS
Enlazado de Datos
Resumen
Directiva ng-app
Directiva ng-init
Directiva ng-model
Directiva ng-repeat
Controladores en AngularJS
Filtros
El DOM HTML
La directiva ng-disabled
La directiva ng-show
Eventos
La Directiva ng-click
Mdulos
Mdulos de AngularJS
Es una buena idea colocar los scripts en la parte inferior del elemento
<body>, justo antes
de la etiqueta . Esto mejora la carga de la pgina, ya que la carga de HTML no est
</body>
bloqueado por los scripts de carga.
<
script
src
=
"//ajax.googleapis.com/ajax/libs/angularjs/1.2.18/angular.min.js"
></
script
>
AngularJS en HTML
AngularJS extiende HTML con ng-directives(Directivas de AngularJS), y enlaza datos a
HTML con expresiones {
{}}: Ejemplo
<
div
ng-app
=
""
>
<
p
>Mi primera expresion: {{ 5 + 5 }}</
p
>
</
div
>
<
script
src
=
"//ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"
></
script
>
Si eliminas la directiva , el HTML mostrar la expresin tal como es, sin resolver.
ng-app
Qu es AngularJS?
AngularJS hace que sea fcil de desarrollar aplicaciones web modernas de una sola
pgina (ZEPA).
AngularJS integra datos de aplicacin a elementos HTML.
AngularJS puede clonar y repetir elementos HTML.
AngularJS puede ocultar y mostrar elementos HTML.
AngularJS puede aadir cdigo "detrs" de los elementos HTML.
AngularJS admite la validacin de entrada.
Expresiones en AngularJS
Las expresiones en AngularJS se escriben dentro de llaves dobles: { .
{expresin}}
Aprende ms con el Curso Online de AngularJS y TypeScript
Las expresiones en AngularJS enlazan datos a elementos HTML.
AngularJS mostrar el resultado de las expresiones exactamente donde se escribi
la expresin.
Las expresiones en AngularJS se parecen mucho a las expresiones de JavaScript.
Las expresiones en AngularJS pueden contener literales, operadores y variables (al
igual JavaScript).
Ejemplo:
{{nombre +
""+ apellido}}
Directivas de AngularJS
Las directivas en AngularJS son atributos HTML con el prefijo ng. La directiva
ng-app
inicializa una aplicacin AngularJS. La directiva
ng-initinicializa datos de AngularJS.
Ejemplo:
<
div
ng-app
=
""
ng-init
=
"nombre='Paco'"
>
<
p
>El nombre es: {{ nombre }}</
p
>
</
div
>
<
div
data-ng-app
=
""
data-ng-init
=
"nombre='Paco'"
>
<
p
>El nombre es: {{ nombre }}</
p
>
</
div
>
<
div
ng-app
=
""
ng-init
=
"nombre='Paco'"
>
<
p
>El nombre es: <
span
ng-bind
=
"nombre"
></
span
></
p
>
</
div
>
Expresiones de AngularJS
La expresiones en AngularJS son escritas dentro de dobles llaves: {{expresin}}Las
expresiones en Angulars enlazan datos al HTML de la misma forma que la directiva
ng-bind . AngularJS mostrar los datos de salida exactamente donde la expresin fue
escrita. Las expresiones de AngularJS son mucho ms que las expresiones de JavaScript:
Estas pueden contener literales, operadores y variables. Por ejemplo:
{{
4+
4}}
{{ nombre +
" "+ apellidos }}
Nmeros de AngularJS
Los nmeros de AngularJS son como los nmeros en JavaScript: Ejemplo:
<
div
ng-app
=
""
ng-init
=
"cantidad=1;precio=5"
>
<
p
>Total en euros: {{ cantidad * precio }}</
p
>
</
div
>
<
div
ng-app
=
""
ng-init
=
"cantidad=1;precio=5"
>
<
p
>Total en euros: <
span
ng-bind
=
"cantidad * precio"
></
span
></
p
>
</
div
>
Usar
ng-initno es muy comn. Aprenders una mejor forma de inicializar datos cuando
hablemos de los controladores.
<
div
ng-app
=
""
ng-init
=
"nombre='Paco';apellidos='Garca Fernndez'"
>
<
p
>El nombre es {{ nombre + ' ' + apellidos }}</
p
>
</
div
>
Arrays en AngularJS
Los arrays en AngularJS se comportan de la misma manera que en JavaScript. Como vas
observando si sabes JavaScript puedes aprender AngularJS de forma rpida. Ejemplo:
<
div
ng-app
=
""
ng-init
=
"frutas=['manzana','sandia','naranja','fresa']"
>
<
p
>Las fruta es {{ frutas[2] }}</
p
>
<!-- El resultado ser: "La fruta es naranja" -->
</
div
>
<
p
>Las fruta es <
span
ng-bind
=
"frutas[2]"
></
span
></
p
>
<!-- El resultado ser: "La fruta es naranja" -->
Objetos en AngularJS
Al igual que en Javascript, en AngularJS accedemos a las propiedades de los objetos
usando el operador . (punto). Ejemplo:
<
div
ng-app
=
""
ng-init
=
"coche={marca:'Renault',modelo:'Megane Coupe'}"
>
<
p
>La marca del coche es {{ coche.marca }}</
p
>
<!-- El resultado ser: "La marca del coche es Renault" -->
</
div
>
Usando :
ng-bind
<
div
ng-app
=
""
ng-init
=
"coche={marca:'Renault',modelo:'Megane Coupe'}"
>
<
p
>La marca del coche es <
span
ng-bind
=
"coche.marca"
></
span
></
p
>
<!-- El resultado ser: "La marca del coche es Renault" -->
</
div
>
<
div
ng-app
=
""
ng-init
=
"nombre='Paco'"
>
<
p
>Nombre: <
input
type
=
"text"
ng-model
=
"nombre"
></
p
>
<
p
>Has escrito: {{ nombre }}</
p
>
</
div
>
Una pgina web puede contener varias aplicaciones AngularJS, corriendo en diferentes
elementos.
Enlazado de Datos
La expresin {{nombre}}, en el ejemplo de arriba, es una expresin de enlazado de datos
de AngularJS. El enlazado de datos en AngularJS, sincroniza las expresiones de AngularJS
con datos de AngularJS. {{nombre}}est sincronizado con ng-model="nombre" . En el
siguiente ejemplo dos campos de texto estn sincronizados con dos directivas n g-model:
<
div
ng-app
=
""
ng-init
=
"cantidad=1;precio=5"
>
Cantidad: <
input
type
=
"number"
ng-model
=
"cantidad"
>
Costo: <
input
type
=
"number"
ng-model
=
"precio"
>
Precio total: {{ quantity * price }}
</
div
>
Como puedes ver, la directiva ng-repeat es usada con Arrays. El cdigo de arriba
provocar que el elemento
li se repita tantas veces como frutas hay en el array, la salida
ser as:
<
div
ng-app
=
""
ng-init
=
"frutas=['Manzana','Fresa','Banana']"
>
<
ul
>
<
li
>Manzana</
li
>
<
li
>Fresa</
li
>
<
li
>Banana</
li
>
</
ul
>
<
div
>
</
div
></
div
>
<
div
ng-app
=
""
ng-init
=
"coches=[
{marca:'Audi',color:'azul'},
{marca:'Ferrari',color:'rojo'},
{marca:'Mercedes',color:'negro'}]"
>
<
ul
>
<
li
ng-repeat
=
"c in coches"
>
{{ c.marca + ', ' + c.color }}
</
li
>
</
ul
>
</
div
>
AngularJS es perfecto para aplicaciones CRUD (Create Read Update Delete). Slo tienes
que pensar como si esos objetos fuesen registros de una base de datos.
Resumen
Directiva ng-app
La directiva
ng-appdefine el elemento raz de una aplicacin AngularJS. La directiva
ng-appinicializar y arrancar automticamente la aplicacin AngularJS una vez la pgina
ha cargado. Ms tarde aprenders como ng-app puede tener un valor (como
ng-app="miModulo" ), para conectar mdulos de cdigo.
Directiva ng-init
La directiva
ng-initdefine los valores iniciales de los datos de una aplicacin AngularJS.
Como anteriormente he comentado, normalmente, no se debe usar ng-init . Usaremos un
controlador o un mdulo en lugar de esto. Lo aprenders ms adelante.
Directiva ng-model
La directiva
ng-modelenlaza elemento HTML con datos de la aplicacin AngularJS. La
directiva n
g-modeltambin nos ofrece las siguientes funcionalidades:
Directiva ng-repeat
La directiva
ng-repeatclona elementos HTML por cada elemento dentro de una coleccin
(array).
<
div
ng-app
=
""
ng-controller
=
"cochesController"
>
Marca: <
input
type
=
"text"
ng-model
=
"coche.marca"
><
br
>
Modelo: <
input
type
=
"text"
ng-model
=
"coche.modelo"
><
br
>
<
br
>
El Coche es: {{coche.marca + " " + coche.modelo}}
</
div
>
<
script
>
function
cochesController
($scope)
{
$scope.coche = {
marca:
"Audi"
,
modelo:
"A5"
};
}
</
script
>
<
div
ng-app
=
""
ng-controller
=
"cocheController"
>
Marca: <
input
type
=
"text"
ng-model
=
"coche.marca"
><
br
>
Modelo: <
input
type
=
"text"
ng-model
=
"coche.modelo"
><
br
>
<
br
>
El coche es: {{coche.nombreCompleto()}}
</
div
>
<
script
>
function
cocheController
($scope)
{
$scope.coche = {
marca:
"Audi"
,
modelo:
"A3"
,
nombreCompleto:
function
()
{
varx;
x = $scope.coche;
returnx.marca +
" "+ x.modelo;
}
};
}
</
script
>
<
div
ng-app
=
""
ng-controller
=
"cocheController"
>
Marca: <
input
type
=
"text"
ng-model
=
"coche.marca"
><
br
>
Modelo: <
input
type
=
"text"
ng-model
=
"coche.modelo"
><
br
>
<
br
>
El coche es: {{ nombreCompletoDelCoche() }}
</
div
>
<
script
>
function
personController
($scope)
{
$scope.coche = {
marca:
"Audi"
,
modelo:
"A3"
,
};
$scope.nombreCompletoDelCoche =
function
()
{
varx;
x = $scope.coche;
returnx.marca +
" "+ x.modelo;
};
}
</
script
>
<
div
ng-app
=
""
ng-controller
=
"cocheController"
>
Marca: <
input
type
=
"text"
ng-model
=
"coche.marca"
><
br
>
Modelo: <
input
type
=
"text"
ng-model
=
"coche.modelo"
><
br
>
<
br
>
El Coche es: {{coche.marca + " " + coche.modelo}}
</
div
>
<
script
src
=
"cocheController.js"
></
script
>
function
alumnosController
($scope)
{
$scope.alumnos = [
{nombre:
'Paco'
,pais:
'Espaa'
},
{nombre:
'Manuel'
,pais:
'Chile'
},
{nombre:
'Laura'
,pais:
'Argentina'
}
];
}
<
div
ng-app
=
""
ng-controller
=
"alumnosController"
>
<
ul
>
<
li
ng-repeat
=
"alumno in alumnos"
>
{{ alumno.nombre + ', ' + alumno.pais }}
</
li
>
</
ul
>
</
div
>
<
script
src
=
"alumnosController.js"
></
script
>
Filtro Descripcin
currency Da formato de moneda a un nmero.
filter Selecciona un subconjunto de elementos de un array.
lowercase Da formato a una cadena convirtindola en minsculas.
orderBy Ordena un array segn una expresin
uppercase Da formato a una cadena convirtindola en maysculas.
<
div
ng-app
=
""
ng-controller
=
"personaController"
>
<
p
>El nombre es {{ persona.nombre | uppercase }}</
p
>
</
div
>
<
div
ng-app
=
""
ng-controller
=
"facturaController"
>
<
input
type
=
"number"
ng-model
=
"cantidad"
>
<
input
type
=
"number"
ng-model
=
"precio"
>
<
p
>Total = {{ (cantidad * precio) | currency }}</
p
>
</
div
>
<
div
ng-app
=
""
ng-controller
=
"alumnosController"
>
<
ul
>
<
li
ng-repeat
=
"alumno in alumnos | orderBy:'pais'"
>
{{ alumno.nombre + ', ' + alumno.pais }}
</
li
>
</
ul
>
<
div
>
</
div
></
div
>
<
div
ng-app
=
""
ng-controller
=
"alumnosController"
>
<
p
><
input
type
=
"text"
ng-model
=
"nombre"
></
p
>
<
ul
>
<
li
ng-repeat
=
"alumno in alumnos | filter:nombre | orderBy:'pais'"
>
{{ (alumno.nombre | uppercase) + ', ' + alumno.pais }}
</
li
>
</
ul
>
</
div
>
El DOM HTML
AngularJS tiene sus propios atributos en HTML que actan como directivas. A continuacin
veremos algunas directivas que manejan objetos del DOM HTML.
La directiva ng-disabled
La directiva
ng-disabledenlaza datos de la aplicacin directamente al atributo HTML
deshabilitado. Ejemplo:
<
div
ng-app
=
""
>
<
p
>
<
button
ng-disabled
=
"misDatos"
>Haz Click!</
button
>
</
p
>
<
p
>
<
input
type
=
"checkbox"
ng-model
=
"misDatos"
>Botn
</
p
>
</
div
>
Explicacin: La directiva
ng-disabledenlaza el dato "misDatos" al atributo HTML disabled.
La directiva
ng-modelenlaza "misDatos" al contenido (valor) del input de tipo checkbox
HTML.
<
div
ng-app
=
""
>
<
p
ng-show
=
"true"
>Soy visible.</
p
>
<
p
ng-show
=
"false"
>Soy invisible.</
p
>
</
div
>
Tambin puedes hacer uso de una expresin que se evala a verdadero o falso (como por
ejemplo ng-show="puntos < 10" ), para ocultar y mostrar elementos HTML. En el
siguiente artculo veremos los Eventos. Suscrbete para recibirlo en tu email tan pronto
como se publique.
Eventos
AngularJS tiene sus propias directivas de eventos HTML.
La Directiva ng-click
La directiva define un evento click de AngularJS. Ejemplo:
ng-click
<
div
ng-app
=
""
ng-controller
=
"miController"
>
<
button
ng-click
=
"count = count + 1"
>Haz click!</
button
>
<
p
>{{ count }}</
p
>
</
div
>
<
div
ng-app
=
""
ng-controller
=
"cocheController"
>
<
button
ng-click
=
"mostrarocultar()"
>Mostrar/Ocultar</
button
>
<
p
id
=
"coche"
ng-show
=
"mivariable"
>
Marca: <
input
type
=
"text"
ng-model
=
"coche.marca"
><
br
>
Modelo: <
input
type
=
"text"
ng-model
=
"coche.modelo"
><
br
>
<
br
>
El Coche es un {{coche.marca+ " " + coche.modelo}}
</
p
>
</
div
>
<
script
>
function
cocheController
($scope)
{
$scope.coche= {
marca:
"Audi"
,
modelo:
"A5"
};
$scope.mivariable=
true
;
$scope.mostrarocultar=
function
()
{
$scope.mivariable= !$scope.mivariable;
};
}
</
script
>
Mdulos
Tus aplicaciones en AngularJS estarn compuestas por mdulos. Todos los controladores
de AngularJS deben pertenecer a un mdulo.
<
div
ng-app
=
"miAplicacion"
ng-controller
=
"miControlador"
>
{{ nombre + " " + apellidos}}
</
div
>
<
script src
=
"//ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"
></
script
>
<
script
src
=
"miAplicacion.js"
></
script
>
<
script
src
=
"miControlador.js"
></ >
script
Las variables globales y las funciones globales no se deben usar en las aplicaciones de
AngularJS, ya que podrn ser sobrescritos o eliminados por otros scripts.
Mdulos de AngularJS
Usando un controlador simple:
<!DOCTYPE html>
<
html
>
<
body
>
<
div
ng-app
=
""
ng-controller
=
"miControlador"
>
{{ nombre + " " + apellidos }}
</
div
>
<
script
>
function
miControlador
($scope)
{
$scope.nombre =
"Mario"
;
$scope.apellidos =
"Flores"
;
}
</
script
>
<
script
src
=
"//ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"
></
script
>
</
body
>
</
html
>
*Podrs notar que en la segunda versin con mdulos hemos cargado AngularJS en la
seccin <head>.
Esto provoca la pgina cargue mucho ms rpido, ya que la carga del HTML no estar
bloqueada por la carga de los scripts.
Como podrs pensar, otra solucin completamente vlida, es cargar la librera de AngularJS
en el <body>, antes de nuestros scripts de AngularJS.
Ejemplo:
<!DOCTYPE html>
<
html
>
Tu aplicacin debe tener al menos un archivo para el mdulo y otro archivo por cada
controlador.
app.controller(
"miControlador"
,function
($scope)
{
$scope.nombre=
"Mario"
;
$scope.apellidos=
"Flores"
;
});
<!DOCTYPE html>
<
html
>
<
body
>