SlideShare una empresa de Scribd logo
1 de 26
Angular Avanzado
Sesion 2

Sergio Castillo Yrizales
@scyrizales
Agenda
 Directivas Anidadas
 Eventos
 Trucos en Angular

2
Directivas Anidadas

3
¿Como crear Directivas?

4
Valores de las propiedades
Propiedad
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
5

Valor

La controladora que se usara para darle ambito al template,
no siempre es necesario
Valores de las propiedades
Propiedad
requires

Indica si una directiva depende de otra

link

6

Valor
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
Ejemplos (Directiva Anidada)
 Hagamos un tab panel
 http://jsfiddle.net/scyrizales/6C6Mv/

7
Eventos

8
Eventos
 Se basan en 3 funciones
 $emit
 $broadcast
 $on

9
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.

10
$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.

11
$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.

12
$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

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







14



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.
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

15
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

16
Trucos en Angular

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

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

19
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

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

arreglos por nosotros:

 Modo de uso:

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

ng-options

 La agrupación se da mediante la etiqueta

<optgroup>

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

23
Tip6: $parent
 Scope: true
 Hija hereda todas las propiedades del padre

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

24
Muchas gracias
 Preguntas
 Dudas
 Inquietudes
 scyrizales – twitter, skype, hangout

25
Examen
 Teórico, 15 minutos durante la semana.
 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 29/11
26

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Angular 2 Campus Madrid Septiembre 2016
Angular 2 Campus Madrid Septiembre 2016Angular 2 Campus Madrid Septiembre 2016
Angular 2 Campus Madrid Septiembre 2016
 
Funciones y procedimientos
Funciones y procedimientosFunciones y procedimientos
Funciones y procedimientos
 
7 Ventajas de Funciones en PHP
7 Ventajas de Funciones en PHP7 Ventajas de Funciones en PHP
7 Ventajas de Funciones en PHP
 
Creación de Builders y DSL's con Groovy
Creación de Builders y DSL's con GroovyCreación de Builders y DSL's con Groovy
Creación de Builders y DSL's con Groovy
 
Por pagar
Por pagarPor pagar
Por pagar
 
Creación de plugins con Grails
Creación de plugins con GrailsCreación de plugins con Grails
Creación de plugins con Grails
 
Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain
 
Retorno de valores
Retorno de valoresRetorno de valores
Retorno de valores
 
Java script(diapositivas)
Java script(diapositivas) Java script(diapositivas)
Java script(diapositivas)
 
Ejemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stlEjemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stl
 
Clase 5 php
Clase 5 phpClase 5 php
Clase 5 php
 
Register globals
Register globalsRegister globals
Register globals
 
Workshop iOS 4: Closures, generics & operators
Workshop iOS 4: Closures, generics & operatorsWorkshop iOS 4: Closures, generics & operators
Workshop iOS 4: Closures, generics & operators
 
Ajax
AjaxAjax
Ajax
 
cream code with objective-c
cream code with objective-ccream code with objective-c
cream code with objective-c
 
Curso php y_mysql
Curso php y_mysqlCurso php y_mysql
Curso php y_mysql
 
Evidencia: Sesión Virtual Funciones PHP
Evidencia: Sesión Virtual Funciones PHPEvidencia: Sesión Virtual Funciones PHP
Evidencia: Sesión Virtual Funciones PHP
 
Taller de PHP Básico
Taller de PHP BásicoTaller de PHP Básico
Taller de PHP Básico
 
Php basico
Php basicoPhp basico
Php basico
 
Introducción a TDD y PHPUnit
Introducción a TDD y PHPUnitIntroducción a TDD y PHPUnit
Introducción a TDD y PHPUnit
 

Similar a Advanced angular 2

Similar a Advanced angular 2 (20)

Django y Python para todos
Django y Python para todosDjango y Python para todos
Django y Python para todos
 
Java 8
Java 8Java 8
Java 8
 
Javascript + Angular Sesion 5
Javascript + Angular Sesion 5Javascript + Angular Sesion 5
Javascript + Angular Sesion 5
 
PHP MySql - FIEI - UNFV Clase03
PHP MySql - FIEI - UNFV Clase03PHP MySql - FIEI - UNFV Clase03
PHP MySql - FIEI - UNFV Clase03
 
El Mal Odiado Javascript
El Mal Odiado JavascriptEl Mal Odiado Javascript
El Mal Odiado Javascript
 
JavaScript no es Vietnam
JavaScript no es VietnamJavaScript no es Vietnam
JavaScript no es Vietnam
 
Fundamento de poo en php
Fundamento de poo en phpFundamento de poo en php
Fundamento de poo en php
 
Clase 5 controller
Clase 5 controllerClase 5 controller
Clase 5 controller
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Java 8 - Nuevas características
Java 8 - Nuevas característicasJava 8 - Nuevas características
Java 8 - Nuevas características
 
Lenguaje c ++ guía para programadores
Lenguaje c ++  guía para programadoresLenguaje c ++  guía para programadores
Lenguaje c ++ guía para programadores
 
Separata java script
Separata java scriptSeparata java script
Separata java script
 
Desarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on RailsDesarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on Rails
 
Actividad 3 . funciones en php
Actividad 3 . funciones en phpActividad 3 . funciones en php
Actividad 3 . funciones en php
 
Php
PhpPhp
Php
 
Javascript Módulo 5 - javascript sentencia, expresión, variable, función - Un...
Javascript Módulo 5 - javascript sentencia, expresión, variable, función - Un...Javascript Módulo 5 - javascript sentencia, expresión, variable, función - Un...
Javascript Módulo 5 - javascript sentencia, expresión, variable, función - Un...
 
Guia 04 parametros poo
Guia 04 parametros pooGuia 04 parametros poo
Guia 04 parametros poo
 

Más de Sergio Castillo Yrizales

Angular of things: angular2 + web bluetooth
Angular of things: angular2 + web bluetoothAngular of things: angular2 + web bluetooth
Angular of things: angular2 + web bluetoothSergio Castillo Yrizales
 
Arquitectura de software para aplicaciones móviles
Arquitectura de software para aplicaciones móvilesArquitectura de software para aplicaciones móviles
Arquitectura de software para aplicaciones móvilesSergio Castillo Yrizales
 

Más de Sergio Castillo Yrizales (20)

Un dia en la vida de un Software Engineer
Un dia en la vida de un Software EngineerUn dia en la vida de un Software Engineer
Un dia en la vida de un Software Engineer
 
Javascript en tiempos de colera
Javascript en tiempos de coleraJavascript en tiempos de colera
Javascript en tiempos de colera
 
Lambda at the edge
Lambda at the edgeLambda at the edge
Lambda at the edge
 
Angular of things: angular2 + web bluetooth
Angular of things: angular2 + web bluetoothAngular of things: angular2 + web bluetooth
Angular of things: angular2 + web bluetooth
 
Pushing html5 beyond boundaries
Pushing html5 beyond boundariesPushing html5 beyond boundaries
Pushing html5 beyond boundaries
 
Javascript en tiempos de colera
Javascript en tiempos de coleraJavascript en tiempos de colera
Javascript en tiempos de colera
 
Web apps con angular y material design
Web apps con angular y material designWeb apps con angular y material design
Web apps con angular y material design
 
Tdd con Angular y jasmine
Tdd con Angular y jasmineTdd con Angular y jasmine
Tdd con Angular y jasmine
 
Ruby 101 session 5
Ruby 101 session 5Ruby 101 session 5
Ruby 101 session 5
 
Ruby 101 session 4
Ruby 101 session 4Ruby 101 session 4
Ruby 101 session 4
 
Javascript + Angular Sesion 6
Javascript + Angular Sesion 6Javascript + Angular Sesion 6
Javascript + Angular Sesion 6
 
Ruby 101 session 3
Ruby 101 session 3Ruby 101 session 3
Ruby 101 session 3
 
Ruby 101 session 2
Ruby 101 session 2Ruby 101 session 2
Ruby 101 session 2
 
Javascript + Angular Sesion 4
Javascript + Angular Sesion 4Javascript + Angular Sesion 4
Javascript + Angular Sesion 4
 
Ruby 101 session 1
Ruby 101 session 1Ruby 101 session 1
Ruby 101 session 1
 
Javascript + Angular Sesion 3
Javascript + Angular Sesion 3Javascript + Angular Sesion 3
Javascript + Angular Sesion 3
 
Javascript + Angular Sesion 2
Javascript + Angular Sesion 2Javascript + Angular Sesion 2
Javascript + Angular Sesion 2
 
Javascript + Angular Sesion 1
Javascript + Angular Sesion 1Javascript + Angular Sesion 1
Javascript + Angular Sesion 1
 
Jquery mobile
Jquery mobileJquery mobile
Jquery mobile
 
Arquitectura de software para aplicaciones móviles
Arquitectura de software para aplicaciones móvilesArquitectura de software para aplicaciones móviles
Arquitectura de software para aplicaciones móviles
 

Advanced angular 2

  • 1. Angular Avanzado Sesion 2 Sergio Castillo Yrizales @scyrizales
  • 2. Agenda  Directivas Anidadas  Eventos  Trucos en Angular 2
  • 5. Valores de las propiedades Propiedad 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 5 Valor La controladora que se usara para darle ambito al template, no siempre es necesario
  • 6. Valores de las propiedades Propiedad requires Indica si una directiva depende de otra link 6 Valor 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
  • 7. Ejemplos (Directiva Anidada)  Hagamos un tab panel  http://jsfiddle.net/scyrizales/6C6Mv/ 7
  • 9. Eventos  Se basan en 3 funciones  $emit  $broadcast  $on 9
  • 10. 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. 10
  • 11. $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. 11
  • 12. $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. 12
  • 13. $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 13
  • 14. Event Object  targetScope - {Scope}: scope Origen de donde     14  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.
  • 15. 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 15
  • 16. 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 16
  • 18. Tip1: Controladoras + Routing  Generar dependencias “on the fly” 18
  • 19. Tip1: Controladoras + Routing  El atributo “resolve” en el routeObject 19
  • 20. 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 20
  • 21. Tip3: Generar un arreglo con Filter  Podemos establecer un filtro que genere un arreglos por nosotros:  Modo de uso: 21
  • 22. Tip4: ngOptions  En la directiva select, se puede definir el atributo ng-options  La agrupación se da mediante la etiqueta <optgroup> 22
  • 23. Tip5: Filtros  Contienen street  No contienen street  Contienen street en su propiedad name  La propiedad name es igual a street 23
  • 24. Tip6: $parent  Scope: true  Hija hereda todas las propiedades del padre  Scope: {}  No hereda nada  $parent  apunta al scope padre 24
  • 25. Muchas gracias  Preguntas  Dudas  Inquietudes  scyrizales – twitter, skype, hangout 25
  • 26. Examen  Teórico, 15 minutos durante la semana.  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 29/11 26