SlideShare ist ein Scribd-Unternehmen logo
1 von 11
Componentes en angular 1.5
Directivas con esteroides
Hugo Biarge
hbiarge@plainconcepts.com
@hbiarge
Angular, en constante evolución
• Angular 1.2
• controllerAs
• Angular 1.3
• bindToController: true | false
• Angular 1.4
• bindToController : { property: ‘=’ }
• Angular 1.5
• require : { controller: ‘^^parent’ }
• scope : ‘<‘
Estilos de arquitectura
• Aplicación como un conjunto de controladores y templates
• Two way binding
• Dirty checking y $digest
• $scope soup, $scope.parent
• Aplicación como un conjunto de componentes
• Directivas estructurales con isolated scope
• controllerAs con isolated scope
• Inputs y outputs
• One direction Data Flow
Componentes
• Azúcar sintáctico para construir directivas estructurales
• Oculta la complejidad del directive definition object
• Define valores por defecto “seguros”
• Facilita la actualización a Angular 2
• Seguir usando directivas para:
• Manipulación del DOM
• Uso completo del API del Directive Definition Object
• priority, terminal, multi-element, …
Sintaxis
(function() {
'use strict';
function HeroDetailController() {
}
angular.module('heroApp')
.component('heroDetail', {
templateUrl: 'heroDetail.html',
controller: HeroDetailController,
bindings: {
hero: '='
}
});
}());
• Objeto vs función factoría
• restrict a E
• Uso de Isolated scope
• Uso de controllerAs por defecto
($ctrl)
• Uso de bindToController
• Soporta transclude
Directivas versus componentes
Bindings (Inputs y Outputs)
• Los bindings que conocíamos(=, @, &)
• Más el binding unidireccional (<)
• No $watch
• Concepto de componente como elemento aislado
• Se comunica con el exterior mediante
• Inputs: @ y <
• Outputs: &
• No modifica el estado del input. Notifica el cambio mediante los outputs
• Filosofía de one direction data flow
Componentes relacionados
• Nuevo require
• Ahora puede ser un objeto
angular.module('app.core')
.component(‘child', {
require: {
parent: '^^parent'
},
bindings: {
title: '@',
propertyValue: '@'
},
controller: ChildController,
templateUrl: ‘child.template.html'
});
function ChildController() {
var vm = this;
vm.select = select;
vm.$onInit = function () {
vm.parent.addTab(vm);
};
function select() {
vm.parent.selectTab(vm);
}
}
Ciclo de vida
• $onInit
• Si existe, llamado por la propia infraestructura
• Una sóla vez
• ¿Cuando?
• Una vez establecidos todos los bindigs del componente
• Antes de que se establezcan los de sus hijos
• Util para inicialización de estado
• Acceder a controladores de components padre
Tipos de componentes
• Puede ser un pequeño componente reutilizable
• O cada una de las páginas que resuelve el router
.state('incomings.list', {
url: '/incomings',
template: '<hb-incomings-list></hb-incomings-list>'
})
Testeo unitario
• $componentController
• Definido en angular-mock
• Factoría para construir components en el contexto de test
• Uso parecido al que hacíamos con $controller
it('should set the default values of the hero', function () {
// It's necessary to always pass the scope in the locals
component = $componentController('heroDetail', { $scope: scope });
expect(component.hero).toEqual({
name: undefined,
location: 'unknown'
});
});

Weitere ähnliche Inhalte

Was ist angesagt? (20)

Angular js
Angular jsAngular js
Angular js
 
Introducción a AngularJS
Introducción a AngularJSIntroducción a AngularJS
Introducción a AngularJS
 
Curso AngularJS - 5. rutas
Curso AngularJS - 5. rutasCurso AngularJS - 5. rutas
Curso AngularJS - 5. rutas
 
JSP Objetos
JSP ObjetosJSP Objetos
JSP Objetos
 
HTML5 Web Workers
HTML5 Web WorkersHTML5 Web Workers
HTML5 Web Workers
 
Curso Básico de AngularJS
Curso Básico de AngularJSCurso Básico de AngularJS
Curso Básico de AngularJS
 
6.angular js
6.angular js6.angular js
6.angular js
 
Grupo #2 - Framework ZK
Grupo #2 - Framework ZKGrupo #2 - Framework ZK
Grupo #2 - Framework ZK
 
AngularJS
AngularJSAngularJS
AngularJS
 
Angularjs
AngularjsAngularjs
Angularjs
 
Angular Conceptos Practicos 2
Angular Conceptos Practicos 2Angular Conceptos Practicos 2
Angular Conceptos Practicos 2
 
Hands-on Spring 3: The next generation
Hands-on Spring 3: The next generationHands-on Spring 3: The next generation
Hands-on Spring 3: The next generation
 
Springboot Overview
Springboot  OverviewSpringboot  Overview
Springboot Overview
 
Spring boot et. al. para el impaciente
Spring boot et. al. para el impacienteSpring boot et. al. para el impaciente
Spring boot et. al. para el impaciente
 
Taller de Backbone.js en Betabeers Malaga 06/09/2012
Taller de Backbone.js en Betabeers Malaga 06/09/2012Taller de Backbone.js en Betabeers Malaga 06/09/2012
Taller de Backbone.js en Betabeers Malaga 06/09/2012
 
ZK Framework
ZK FrameworkZK Framework
ZK Framework
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
Despegar Tech Talk - AngularJS
Despegar Tech Talk - AngularJSDespegar Tech Talk - AngularJS
Despegar Tech Talk - AngularJS
 
Introducción a AngularJS
Introducción a AngularJSIntroducción a AngularJS
Introducción a AngularJS
 
SEMINARIO: ACCESO A BASE DE DATOS CON JDBC
SEMINARIO: ACCESO A BASE DE DATOS CON JDBCSEMINARIO: ACCESO A BASE DE DATOS CON JDBC
SEMINARIO: ACCESO A BASE DE DATOS CON JDBC
 

Andere mochten auch

Comment réussir son projet en Angular 1.5 ?
Comment réussir son projet en Angular 1.5 ?Comment réussir son projet en Angular 1.5 ?
Comment réussir son projet en Angular 1.5 ?Maxime Bernard
 
Building Modern Web Apps with AngularJS
Building Modern Web Apps with AngularJSBuilding Modern Web Apps with AngularJS
Building Modern Web Apps with AngularJSRaveen Perera
 
Angular 1.5 Components
Angular 1.5 ComponentsAngular 1.5 Components
Angular 1.5 ComponentsJosé Barbosa
 
AngularJS Version 1.3
AngularJS  Version 1.3AngularJS  Version 1.3
AngularJS Version 1.3Nir Noy
 
1.3 y 1.4 subject and predicate
1.3 y 1.4 subject and predicate1.3 y 1.4 subject and predicate
1.3 y 1.4 subject and predicatepaolyta28
 
Angular 1.x reloaded: improve your app now! and get ready for 2.0
Angular 1.x reloaded:  improve your app now! and get ready for 2.0Angular 1.x reloaded:  improve your app now! and get ready for 2.0
Angular 1.x reloaded: improve your app now! and get ready for 2.0Carlo Bonamico
 
さわってみようReact.js、AngularJS(1系、2系)
さわってみようReact.js、AngularJS(1系、2系)さわってみようReact.js、AngularJS(1系、2系)
さわってみようReact.js、AngularJS(1系、2系)Kazuhiro Yoshimoto
 
Code migration from Angular 1.x to Angular 2.0
Code migration from Angular 1.x to Angular 2.0Code migration from Angular 1.x to Angular 2.0
Code migration from Angular 1.x to Angular 2.0Ran Wahle
 
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」yoshiaki iwanaga
 
Angular 2 Migration - JHipster Meetup 6
Angular 2 Migration - JHipster Meetup 6Angular 2 Migration - JHipster Meetup 6
Angular 2 Migration - JHipster Meetup 6William Marques
 
Migrating an application from Angular 1 to Angular 2
Migrating an application from Angular 1 to Angular 2 Migrating an application from Angular 1 to Angular 2
Migrating an application from Angular 1 to Angular 2 Ross Dederer
 
AngularJS 2, version 1 and ReactJS
AngularJS 2, version 1 and ReactJSAngularJS 2, version 1 and ReactJS
AngularJS 2, version 1 and ReactJSKenneth Ceyer
 
Introduction to Angular 2
Introduction to Angular 2Introduction to Angular 2
Introduction to Angular 2Knoldus Inc.
 

Andere mochten auch (14)

Comment réussir son projet en Angular 1.5 ?
Comment réussir son projet en Angular 1.5 ?Comment réussir son projet en Angular 1.5 ?
Comment réussir son projet en Angular 1.5 ?
 
Building Modern Web Apps with AngularJS
Building Modern Web Apps with AngularJSBuilding Modern Web Apps with AngularJS
Building Modern Web Apps with AngularJS
 
Angular 1.5 Components
Angular 1.5 ComponentsAngular 1.5 Components
Angular 1.5 Components
 
AngularJS Version 1.3
AngularJS  Version 1.3AngularJS  Version 1.3
AngularJS Version 1.3
 
1.3 y 1.4 subject and predicate
1.3 y 1.4 subject and predicate1.3 y 1.4 subject and predicate
1.3 y 1.4 subject and predicate
 
Angular 1.x reloaded: improve your app now! and get ready for 2.0
Angular 1.x reloaded:  improve your app now! and get ready for 2.0Angular 1.x reloaded:  improve your app now! and get ready for 2.0
Angular 1.x reloaded: improve your app now! and get ready for 2.0
 
さわってみようReact.js、AngularJS(1系、2系)
さわってみようReact.js、AngularJS(1系、2系)さわってみようReact.js、AngularJS(1系、2系)
さわってみようReact.js、AngularJS(1系、2系)
 
Introduction to AngularJs
Introduction to AngularJsIntroduction to AngularJs
Introduction to AngularJs
 
Code migration from Angular 1.x to Angular 2.0
Code migration from Angular 1.x to Angular 2.0Code migration from Angular 1.x to Angular 2.0
Code migration from Angular 1.x to Angular 2.0
 
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
 
Angular 2 Migration - JHipster Meetup 6
Angular 2 Migration - JHipster Meetup 6Angular 2 Migration - JHipster Meetup 6
Angular 2 Migration - JHipster Meetup 6
 
Migrating an application from Angular 1 to Angular 2
Migrating an application from Angular 1 to Angular 2 Migrating an application from Angular 1 to Angular 2
Migrating an application from Angular 1 to Angular 2
 
AngularJS 2, version 1 and ReactJS
AngularJS 2, version 1 and ReactJSAngularJS 2, version 1 and ReactJS
AngularJS 2, version 1 and ReactJS
 
Introduction to Angular 2
Introduction to Angular 2Introduction to Angular 2
Introduction to Angular 2
 

Ähnlich wie Componentes en angularjs 1.5

Ähnlich wie Componentes en angularjs 1.5 (20)

Angular Fundamentals
Angular FundamentalsAngular Fundamentals
Angular Fundamentals
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJS
 
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
 
Api joomla!.key
Api joomla!.keyApi joomla!.key
Api joomla!.key
 
Strust
StrustStrust
Strust
 
ASP.NET MVC Core by Eduard Tomàs
ASP.NET MVC Core by Eduard TomàsASP.NET MVC Core by Eduard Tomàs
ASP.NET MVC Core by Eduard Tomàs
 
ASP.NET MVC Core
ASP.NET MVC CoreASP.NET MVC Core
ASP.NET MVC Core
 
ASP.NET 5 & MVC 6 (RC1)
ASP.NET 5 & MVC 6 (RC1)ASP.NET 5 & MVC 6 (RC1)
ASP.NET 5 & MVC 6 (RC1)
 
Jdbc
JdbcJdbc
Jdbc
 
Rails intro
Rails introRails intro
Rails intro
 
Ruby On Rails Intro
Ruby On Rails IntroRuby On Rails Intro
Ruby On Rails Intro
 
Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6
 
Code Igniter
Code IgniterCode Igniter
Code Igniter
 
Core Data en Mac OS X
Core Data en Mac OS XCore Data en Mac OS X
Core Data en Mac OS X
 
Advanced angular 1
Advanced angular 1Advanced angular 1
Advanced angular 1
 
DeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - SpanishDeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - Spanish
 
DeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - SpanishDeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - Spanish
 
DeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - SpanishDeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - Spanish
 
S4-PD1.pptx
S4-PD1.pptxS4-PD1.pptx
S4-PD1.pptx
 
Spring Web Flow
Spring Web FlowSpring Web Flow
Spring Web Flow
 

Componentes en angularjs 1.5

  • 1. Componentes en angular 1.5 Directivas con esteroides Hugo Biarge hbiarge@plainconcepts.com @hbiarge
  • 2. Angular, en constante evolución • Angular 1.2 • controllerAs • Angular 1.3 • bindToController: true | false • Angular 1.4 • bindToController : { property: ‘=’ } • Angular 1.5 • require : { controller: ‘^^parent’ } • scope : ‘<‘
  • 3. Estilos de arquitectura • Aplicación como un conjunto de controladores y templates • Two way binding • Dirty checking y $digest • $scope soup, $scope.parent • Aplicación como un conjunto de componentes • Directivas estructurales con isolated scope • controllerAs con isolated scope • Inputs y outputs • One direction Data Flow
  • 4. Componentes • Azúcar sintáctico para construir directivas estructurales • Oculta la complejidad del directive definition object • Define valores por defecto “seguros” • Facilita la actualización a Angular 2 • Seguir usando directivas para: • Manipulación del DOM • Uso completo del API del Directive Definition Object • priority, terminal, multi-element, …
  • 5. Sintaxis (function() { 'use strict'; function HeroDetailController() { } angular.module('heroApp') .component('heroDetail', { templateUrl: 'heroDetail.html', controller: HeroDetailController, bindings: { hero: '=' } }); }()); • Objeto vs función factoría • restrict a E • Uso de Isolated scope • Uso de controllerAs por defecto ($ctrl) • Uso de bindToController • Soporta transclude
  • 7. Bindings (Inputs y Outputs) • Los bindings que conocíamos(=, @, &) • Más el binding unidireccional (<) • No $watch • Concepto de componente como elemento aislado • Se comunica con el exterior mediante • Inputs: @ y < • Outputs: & • No modifica el estado del input. Notifica el cambio mediante los outputs • Filosofía de one direction data flow
  • 8. Componentes relacionados • Nuevo require • Ahora puede ser un objeto angular.module('app.core') .component(‘child', { require: { parent: '^^parent' }, bindings: { title: '@', propertyValue: '@' }, controller: ChildController, templateUrl: ‘child.template.html' }); function ChildController() { var vm = this; vm.select = select; vm.$onInit = function () { vm.parent.addTab(vm); }; function select() { vm.parent.selectTab(vm); } }
  • 9. Ciclo de vida • $onInit • Si existe, llamado por la propia infraestructura • Una sóla vez • ¿Cuando? • Una vez establecidos todos los bindigs del componente • Antes de que se establezcan los de sus hijos • Util para inicialización de estado • Acceder a controladores de components padre
  • 10. Tipos de componentes • Puede ser un pequeño componente reutilizable • O cada una de las páginas que resuelve el router .state('incomings.list', { url: '/incomings', template: '<hb-incomings-list></hb-incomings-list>' })
  • 11. Testeo unitario • $componentController • Definido en angular-mock • Factoría para construir components en el contexto de test • Uso parecido al que hacíamos con $controller it('should set the default values of the hero', function () { // It's necessary to always pass the scope in the locals component = $componentController('heroDetail', { $scope: scope }); expect(component.hero).toEqual({ name: undefined, location: 'unknown' }); });