33
AngularJS Conceptos Prácticos 2

Angular Conceptos Practicos 2

Embed Size (px)

Citation preview

Page 1: Angular Conceptos Practicos 2

 AngularJSConceptos Prácticos 2

Page 2: Angular Conceptos Practicos 2

Directivas II

Explicando la Magia

Eventos

Trucos en Angular

Agenda

Page 3: Angular Conceptos Practicos 2

Directivas II

Page 4: Angular Conceptos Practicos 2

4

¿Como crear Directivas?

Page 5: Angular Conceptos Practicos 2

5

Valores de las propiedadesPropiedad Valor

restrict Puede ser A,E,C y M que significan attribute, element, class, o comment

scope Cada subpropiedad puede tener cualquiera de estos 3 valores:•@: el valor es de un solo sentido•=: el valor es de dos sentidos•&: guarda una referencia a una función o expresión

template La base para escribir el código que usará la directiva

replace Boolean que indica si se debe reemplazar el html original por el html generado por el template

transclude Indica si se debe preservar el contenido de la declaración de la directiva en el html original, se usa en conjunto con ng-transclude

controller La controladora que se usara para darle ambito al template, no siempre es necesario

Page 6: Angular Conceptos Practicos 2

6

Valores de las propiedadesPropiedad Valor

requires Indica si una directiva depende de otra

link Función que realiza la configuración inicial de la directiva. Recibe cuatro parametros:function link(scope, iElement, iAttrs, controller)•scope: indica el objeto creado por la propiedad scope.•iElement: se refiere al objeto base de la controladora. Este vienen encapsulado en jqLite o Jquery (si es que se incluyo en el proyecto)•iAttrs: los atributos que se asignaron al html original de la directiva declarada•Controller: el controller de la directiva padre. Solo cuando se ha establecido la propiedad requires

Page 7: Angular Conceptos Practicos 2

Las directivas se pueden usar para incrementar la reusabilidad del codigo

◦ Ejemplo:◦ http://codepen.io/scyrizales/full/egdsB

Casos de Uso

Page 8: Angular Conceptos Practicos 2

Las directivas se pueden usar para implementar el doble binding entre Angular y componentes de terceros

◦ Ejemplo:◦ http://codepen.io/brunoscopelliti/full/zIstF

Casos de Uso

Page 9: Angular Conceptos Practicos 2

9

Explicando la magia

Page 10: Angular Conceptos Practicos 2

10

Explicando el Data Binding

Cada vez que cambia el scope, se actualiza la vista.

Cada vez que un “major event” sucede en la aplicación, y luego de que sucede, se ejecuta una operación “digest” y se actualiza el scope

Page 11: Angular Conceptos Practicos 2

11

Major Events Entradas de usuario:

◦ Mouse, keyboard, etc.

Eventos de Navegador: ◦ timeout, blur, etc.

Llamadas Ajax: ◦ json, templates, etc…

Page 12: Angular Conceptos Practicos 2

12

$apply, $digest and $$phase $digest es un metodo interno que realiza la

verificación de los cambios entre la vista y el scope y hace las respectivas actualizaciones al scope

$apply sirve para llamar desde fuera al $digest. Cuando usamos otras librerias externas, es necesario llamar a $apply

$$phase es un indicador de si esta corriendo un $digest. Debemos tenerlo en cuenta para no aplicar $apply porque nos dará un error.

Page 13: Angular Conceptos Practicos 2

13

Llamando a Angular desde fuera

angular.element(domElement).scope()

Sobre este scope, podemos aplicar las funciones $apply y $digest.

Page 14: Angular Conceptos Practicos 2

14

SafeApply Para evitar los problemas de usar el $apply

podemos crear esta función en el rootScope

Page 15: Angular Conceptos Practicos 2

Eventos

Page 16: Angular Conceptos Practicos 2

16

Eventos Se basan en 3 funciones

◦ $emit

◦ $broadcast

◦ $on

Page 17: Angular Conceptos Practicos 2

17

Cadena de Herencia Desde el lugar donde se tome el punto de

referencia, hay dos cadenas de herencias

Esto se cumple para las controladoras y las directivas

Depende de hacia donde nos queramos comunicar hay un método distinto.

Page 18: Angular Conceptos Practicos 2

18

$emit(evName, args[]) Envia un evento hacia arriba en la cadena

de scopes

Va desde el punto de origen, hacia el rootscope

Una directiva la puede usar para comunicarse con la controladora padre.

Page 19: Angular Conceptos Practicos 2

19

$broadcast(evName, args[]) Envia un evento hacia abajo en la cadena

de scopes

Va desde el punto de origen, hacia el rootscope

Una controladora la puede usar para comunicarse con controladoras hijas o directivas.

Page 20: Angular Conceptos Practicos 2

20

$on(name, listenerFn) Permite escuchar un evento

listenerFn es una funcion con el siguiente formato:◦ function(event, args...)

The event es un objeto Event que tiene varias propiedades

Page 21: Angular Conceptos Practicos 2

21

Event Object targetScope - {Scope}: scope Origen de donde

fue $emit-ido o $broadcast-eado. currentScope - {Scope}: el scope en el que se

llama la función $on. name - {string}: nombre del Evento. stopPropagation - {function=}: llamar  función

stopPropagation cancelara toda posible propagación (solo para eventos que fueron $emit-idos).

preventDefault - {function}: calling preventDefault sets defaultPrevented flag to true.

defaultPrevented - {boolean}: true if preventDefault was called.

Page 22: Angular Conceptos Practicos 2

22

Usando $rootScope Se puede inyectar el rootScope en una

controladora o directiva para poder utilizar el $broadcast como un event hub global

Lo ideal seria encapsularlo en un servicio para poder inyectarlo a voluntad sin exponer las demas funciones del rootScope

Page 23: Angular Conceptos Practicos 2

23

Ejemplo Refactorizar el ejemplo del carrito

Crear una directiva que muestre el conteo de items

Construir un servicio que se comporte como Event Hub

Que el conteo se actualize mediante el EventHub

Page 24: Angular Conceptos Practicos 2

Trucos en Angular

Page 25: Angular Conceptos Practicos 2

25

Tip1: Controladoras + Routing Generar dependencias “on the fly”

Page 26: Angular Conceptos Practicos 2

26

Tip1: Controladoras + Routing El atributo “resolve” en el routeObject

Page 27: Angular Conceptos Practicos 2

27

Tip2: Opciones ng-repeat $index: Contador de iteraciones. Inicia en 0

$first: flag

$last: flag

$middle: flag (cualquier elemento entre first y last

$even $odd

Page 28: Angular Conceptos Practicos 2

28

Tip3: Generar un arreglo con Filter Podemos establecer un filtro que genere un

arreglos por nosotros:

Modo de uso:

Page 29: Angular Conceptos Practicos 2

29

Tip4: ngOptions En la directiva select, se puede definir el

atributo ng-options

La agrupación se da mediante la etiqueta <optgroup>

Page 30: Angular Conceptos Practicos 2

30

Tip5: Filtros Contienen street No contienen street Contienen street en su propiedad name La propiedad name es igual a street

Page 31: Angular Conceptos Practicos 2

31

Tip6: $parent

Scope: true◦ Hija hereda todas las propiedades del padre

Scope: {} No hereda nada◦ $parent apunta al scope padre

Page 32: Angular Conceptos Practicos 2

32

Examen Teórico, 15 minutos durante la semana.

◦ Basado en las diapositivas

Práctico:◦ Realizar un blog, ◦ Login, una directiva que escuche cuando alguien

se logea y de la bienvenida◦ CRUD Posts◦ Usar filtros para la fecha◦ Usar routing, services, controllers, directives◦ Viernes 28/02

Page 33: Angular Conceptos Practicos 2

Muchas Gracias¿Alguna pregunta?

Sergio CastilloFront End Developer@scyrizales