SlideShare uma empresa Scribd logo
1 de 17
Lógica de negocio en 
AngularJS
Debug 
 Chrome + Batarang 
 $scope 
 Todos los navegadores 
 Muestra scope del elemento seleccionado 
 angular.element($0).scope(); 
 Command Line API Reference 
 https://developer.chrome.com/devtools/docs/commandline-api
Inyección de dependencias 
 Ubicación 
 angular.injector(['ng', 'myModule']); 
 angular.element($0).data().$injector; 
 Seleccionando el elemento que tiene el ng-app 
 TODO es singleton!!!
Formas de inyectar 
 Método directo 
 NO recomendado. Problemas con minificación 
myModule.factory(‘myFactory’, function($scope){ … }); 
 Asignar a la función una variable estática $inject 
var factory = function(scope) { … }; 
factory.$inject = [‘$scope’]; 
myModule.factory(‘myFactory’, factory); 
 Asignado los nombres en línea 
myModule.factory(‘myFactory’, [‘$scope’, function(scope) { … }]);
Inyector 
 Métodos 
 annotate 
 has 
 get (patron ServiceLocator) 
 Invoke 
 Instatiate
DEMO 
Debug
Factory 
 Injección por Invoque 
myModule.factory(‘myFactory’, […, function(…) { 
return { 
helloWorld: function() { 
console.log(‘hello world’); 
} 
}; 
}]);
Service 
 Injección por Instantiate 
myModule.service(‘myService’, […, function(…) { 
this.helloWorld = function() { 
console.log('hello world'); 
}; 
}]);
Provider 
 Injección por Instantiate 
 Puede inyectarse en el config “myProviderProvider” 
myModule.provider(‘myProvider’, […, function(…) { 
var _text = ''; 
function helloWorld() { console.log(_text); } 
this.setText(text) { _text = text; }; 
this.$get = function(...) { 
return helloWorld; 
}; 
}]);
ControllerAs 
 Injección por Instantiate 
myModule.controller(‘myController’, function() { 
this.name = “Xavi”; 
} 
 Uso de this 
<body ng-controller="myController as alias"> 
<input type="text" ng-model="alias.name"> 
<span>{{alias.name}}</span> 
</body>
Controller tradicional 
 Injección por Instantiate 
myModule.controller(‘myController’, function($scope) { 
$scope.name = “Xavi”; 
} 
 Uso de this 
<body ng-controller="myController"> 
<input type="text" ng-model="name"> 
<span>{{name}}</span> 
</body>
Value 
 Puede almacenar: 
 Valores primitivos 
 Objetos js 
myModule.value(‘pi’, 3,1416); 
myModule.value(‘config’, { 
url: ‘http://...’, 
defaultPageSize: 20, 
... 
});
Constant 
 Puede inyectarse en el config 
myModule.constant(‘pi’, 3,1416); 
myModule.constant(‘config’, { 
url: ‘http://...’, 
defaultPageSize: 20, 
... 
});
DEMO 
Lógica de negocio
Decorator 
 Intercepta la llamada 
 Factory, Service, Provider, y Directive 
myModule.config(['$provide', function (provide) { 
provide.decorator('myService', ['$delegate', function (delegate) { 
var previous = delegate.helloWorld; 
delegate.helloWorld = function() { 
return previous() + ‘!!!’; 
} 
return delegate; 
}]); 
}]); 
http://briantford.com/blog/angular-hacking-core
Bibliografía 
 Sitio oficial 
 http://www.angular.js 
 Chrome y extension Batarang 
 http://www.chrome.com 
 https://chrome.google.com/webstore/detail/angularjs-batarang/ 
ighdmehidhipcmcojjgiloacoafjmpfk?hl=es
Si quieres ampliar… 
 Curso Louesfera 
 http://www.louesfera.com/?s=angular&lang=es 
 En especial el capítulo 9 
 http://www.louesfera.com/2014/10/21/logica-negocio-angularjs/ 
 Repositorio mgAngular 
 https://github.com/MagicCrudAngular/mgCrud

Mais conteúdo relacionado

Mais procurados

Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)Ignacio Martín
 
Desarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando SymfonyDesarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando SymfonyAsier Marqués
 
Customizer: configurando un sitio en tiempo real
Customizer: configurando un sitio en tiempo realCustomizer: configurando un sitio en tiempo real
Customizer: configurando un sitio en tiempo realwpargentina
 
Twig, el nuevo motor de plantillas de Drupal 8
Twig, el nuevo motor de plantillas de Drupal 8Twig, el nuevo motor de plantillas de Drupal 8
Twig, el nuevo motor de plantillas de Drupal 8Javier Eguiluz
 
Silex, desarrollo web ágil y profesional con PHP
Silex, desarrollo web ágil y profesional con PHPSilex, desarrollo web ágil y profesional con PHP
Silex, desarrollo web ágil y profesional con PHPJavier Eguiluz
 
WordCamp Cantabria - Código mantenible con WordPress
WordCamp Cantabria  - Código mantenible con WordPressWordCamp Cantabria  - Código mantenible con WordPress
WordCamp Cantabria - Código mantenible con WordPressAsier Marqués
 
Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)Javier Eguiluz
 
Api De Google Calendar
Api De Google CalendarApi De Google Calendar
Api De Google Calendarjvelizster
 
Introducción a JQuery
Introducción a JQueryIntroducción a JQuery
Introducción a JQueryContinuum
 
Php excel
Php excelPhp excel
Php excelpcuseth
 
Drupal7 para desarrolladores
Drupal7 para desarrolladoresDrupal7 para desarrolladores
Drupal7 para desarrolladoresPedro Cambra
 
Charla Jquery
Charla JqueryCharla Jquery
Charla Jquerykaolong
 
Codemotion 2016 - d3.js un taller divertido y difícil
Codemotion 2016 - d3.js un taller divertido y difícilCodemotion 2016 - d3.js un taller divertido y difícil
Codemotion 2016 - d3.js un taller divertido y difícilJavier Abadía
 

Mais procurados (20)

Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
 
Introducción a Flask
Introducción a FlaskIntroducción a Flask
Introducción a Flask
 
Desarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando SymfonyDesarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando Symfony
 
Introducción a DJango
Introducción a DJangoIntroducción a DJango
Introducción a DJango
 
Customizer: configurando un sitio en tiempo real
Customizer: configurando un sitio en tiempo realCustomizer: configurando un sitio en tiempo real
Customizer: configurando un sitio en tiempo real
 
(Muy breve) Introduccion a jQuery
(Muy breve) Introduccion a jQuery(Muy breve) Introduccion a jQuery
(Muy breve) Introduccion a jQuery
 
Twig, el nuevo motor de plantillas de Drupal 8
Twig, el nuevo motor de plantillas de Drupal 8Twig, el nuevo motor de plantillas de Drupal 8
Twig, el nuevo motor de plantillas de Drupal 8
 
Silex, desarrollo web ágil y profesional con PHP
Silex, desarrollo web ágil y profesional con PHPSilex, desarrollo web ágil y profesional con PHP
Silex, desarrollo web ágil y profesional con PHP
 
WordCamp Cantabria - Código mantenible con WordPress
WordCamp Cantabria  - Código mantenible con WordPressWordCamp Cantabria  - Código mantenible con WordPress
WordCamp Cantabria - Código mantenible con WordPress
 
Ajax
AjaxAjax
Ajax
 
Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)
 
Api De Google Calendar
Api De Google CalendarApi De Google Calendar
Api De Google Calendar
 
Introducción a JQuery
Introducción a JQueryIntroducción a JQuery
Introducción a JQuery
 
Php excel
Php excelPhp excel
Php excel
 
Drupal7 para desarrolladores
Drupal7 para desarrolladoresDrupal7 para desarrolladores
Drupal7 para desarrolladores
 
Introducción a los hooks
Introducción a los hooksIntroducción a los hooks
Introducción a los hooks
 
Backend (sf2Vigo)
Backend (sf2Vigo)Backend (sf2Vigo)
Backend (sf2Vigo)
 
Charla Jquery
Charla JqueryCharla Jquery
Charla Jquery
 
Zen AJAX - Programador PHP
Zen AJAX - Programador PHPZen AJAX - Programador PHP
Zen AJAX - Programador PHP
 
Codemotion 2016 - d3.js un taller divertido y difícil
Codemotion 2016 - d3.js un taller divertido y difícilCodemotion 2016 - d3.js un taller divertido y difícil
Codemotion 2016 - d3.js un taller divertido y difícil
 

Destaque

Tutorial AngularJS - episódio 5 - diretivas
Tutorial AngularJS - episódio 5 -  diretivasTutorial AngularJS - episódio 5 -  diretivas
Tutorial AngularJS - episódio 5 - diretivasJose Naves Moura Neto
 
Digitalcases k ernerot110401
Digitalcases k ernerot110401Digitalcases k ernerot110401
Digitalcases k ernerot110401ifunck
 
Ruby on Rails 2.1 What's New
Ruby on Rails 2.1 What's NewRuby on Rails 2.1 What's New
Ruby on Rails 2.1 What's NewLibin Pan
 
5ª JORNADA FRV SUB16 FEMENINO
5ª JORNADA FRV SUB16 FEMENINO5ª JORNADA FRV SUB16 FEMENINO
5ª JORNADA FRV SUB16 FEMENINOPE Mendikute
 
Energy Vision Report: Tomorrow’s Trucks: Leaving the Era of Oil Behind
Energy Vision Report: Tomorrow’s Trucks: Leaving the Era of Oil BehindEnergy Vision Report: Tomorrow’s Trucks: Leaving the Era of Oil Behind
Energy Vision Report: Tomorrow’s Trucks: Leaving the Era of Oil BehindMarcellus Drilling News
 
Mifid ii das ende der alten (vermittler-) welt
Mifid ii   das ende der alten (vermittler-) weltMifid ii   das ende der alten (vermittler-) welt
Mifid ii das ende der alten (vermittler-) weltbestbanking medien
 
Haftalık Medya Raporu 07 - 13 ekim 2013
Haftalık Medya Raporu  07 - 13 ekim 2013Haftalık Medya Raporu  07 - 13 ekim 2013
Haftalık Medya Raporu 07 - 13 ekim 2013Carat Turkiye
 
Fichamedica 15abyla
Fichamedica 15abylaFichamedica 15abyla
Fichamedica 15abylaiesabyla
 
Discurso Miguel Buen Forum Nueva Economia
Discurso Miguel Buen Forum Nueva EconomiaDiscurso Miguel Buen Forum Nueva Economia
Discurso Miguel Buen Forum Nueva EconomiaPSOE Astigarraga
 

Destaque (19)

Curso AngularJS - 7. temas avanzados
Curso AngularJS - 7. temas avanzadosCurso AngularJS - 7. temas avanzados
Curso AngularJS - 7. temas avanzados
 
Tutorial AngularJS - episódio 5 - diretivas
Tutorial AngularJS - episódio 5 -  diretivasTutorial AngularJS - episódio 5 -  diretivas
Tutorial AngularJS - episódio 5 - diretivas
 
Directivas en angular js
Directivas en angular jsDirectivas en angular js
Directivas en angular js
 
Curso AngularJS - 6. formularios
Curso AngularJS - 6. formulariosCurso AngularJS - 6. formularios
Curso AngularJS - 6. formularios
 
Directivas en AngularJS
Directivas en AngularJSDirectivas en AngularJS
Directivas en AngularJS
 
Digitalcases k ernerot110401
Digitalcases k ernerot110401Digitalcases k ernerot110401
Digitalcases k ernerot110401
 
Ruby on Rails 2.1 What's New
Ruby on Rails 2.1 What's NewRuby on Rails 2.1 What's New
Ruby on Rails 2.1 What's New
 
5ª JORNADA FRV SUB16 FEMENINO
5ª JORNADA FRV SUB16 FEMENINO5ª JORNADA FRV SUB16 FEMENINO
5ª JORNADA FRV SUB16 FEMENINO
 
Historia de Salvatierra
Historia de SalvatierraHistoria de Salvatierra
Historia de Salvatierra
 
Energy Vision Report: Tomorrow’s Trucks: Leaving the Era of Oil Behind
Energy Vision Report: Tomorrow’s Trucks: Leaving the Era of Oil BehindEnergy Vision Report: Tomorrow’s Trucks: Leaving the Era of Oil Behind
Energy Vision Report: Tomorrow’s Trucks: Leaving the Era of Oil Behind
 
MSc and Doctor of Philosophy inter-university programmesp health economics m ...
MSc and Doctor of Philosophy inter-university programmesp health economics m ...MSc and Doctor of Philosophy inter-university programmesp health economics m ...
MSc and Doctor of Philosophy inter-university programmesp health economics m ...
 
Mifid ii das ende der alten (vermittler-) welt
Mifid ii   das ende der alten (vermittler-) weltMifid ii   das ende der alten (vermittler-) welt
Mifid ii das ende der alten (vermittler-) welt
 
Estafador de astrofotografia
Estafador de astrofotografiaEstafador de astrofotografia
Estafador de astrofotografia
 
Direitos Humanos
Direitos HumanosDireitos Humanos
Direitos Humanos
 
Haftalık Medya Raporu 07 - 13 ekim 2013
Haftalık Medya Raporu  07 - 13 ekim 2013Haftalık Medya Raporu  07 - 13 ekim 2013
Haftalık Medya Raporu 07 - 13 ekim 2013
 
Fichamedica 15abyla
Fichamedica 15abylaFichamedica 15abyla
Fichamedica 15abyla
 
Samsung's smartphone operating system: bada
Samsung's smartphone operating system: badaSamsung's smartphone operating system: bada
Samsung's smartphone operating system: bada
 
El Centro, Como Su Nombre Indica
El Centro, Como Su Nombre IndicaEl Centro, Como Su Nombre Indica
El Centro, Como Su Nombre Indica
 
Discurso Miguel Buen Forum Nueva Economia
Discurso Miguel Buen Forum Nueva EconomiaDiscurso Miguel Buen Forum Nueva Economia
Discurso Miguel Buen Forum Nueva Economia
 

Semelhante a Angularjs Lógica de negocio

Introducción a AngularJS
Introducción a AngularJS Introducción a AngularJS
Introducción a AngularJS Marcos Reynoso
 
Informe grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencaInforme grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencapaulcuenca9
 
Intro aplicaciones web con php
Intro aplicaciones web con phpIntro aplicaciones web con php
Intro aplicaciones web con phpFer Nando
 
Construccion a través de compontes
Construccion a través de compontesConstruccion a través de compontes
Construccion a través de compontesjalzate
 
Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Gabriela Bosetti
 
Javascript es6-ejercicios-resueltos-parte-2
Javascript es6-ejercicios-resueltos-parte-2Javascript es6-ejercicios-resueltos-parte-2
Javascript es6-ejercicios-resueltos-parte-2josegmay
 
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Juan Manuel
 
JavaScript no es Vietnam
JavaScript no es VietnamJavaScript no es Vietnam
JavaScript no es VietnamAlex Casquete
 
05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodos05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodosDanae Aguilar Guzmán
 
Programación MySQL-Ejercicios
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejerciciostestgrupocomex
 

Semelhante a Angularjs Lógica de negocio (20)

Introducción a AngularJS
Introducción a AngularJS Introducción a AngularJS
Introducción a AngularJS
 
Informe grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencaInforme grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuenca
 
EXAMEN
EXAMENEXAMEN
EXAMEN
 
APIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptxAPIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptx
 
De HTML a Express
De HTML a ExpressDe HTML a Express
De HTML a Express
 
Gwt III - Avanzado
Gwt III - AvanzadoGwt III - Avanzado
Gwt III - Avanzado
 
Intro aplicaciones web con php
Intro aplicaciones web con phpIntro aplicaciones web con php
Intro aplicaciones web con php
 
Construccion a través de compontes
Construccion a través de compontesConstruccion a través de compontes
Construccion a través de compontes
 
Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6
 
Javascript es6-ejercicios-resueltos-parte-2
Javascript es6-ejercicios-resueltos-parte-2Javascript es6-ejercicios-resueltos-parte-2
Javascript es6-ejercicios-resueltos-parte-2
 
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
 
Javascript y AJAX en Wordpress
Javascript y AJAX en WordpressJavascript y AJAX en Wordpress
Javascript y AJAX en Wordpress
 
Semana 4 Estructura y componentes SPA
Semana 4  Estructura y componentes SPASemana 4  Estructura y componentes SPA
Semana 4 Estructura y componentes SPA
 
JavaScript no es Vietnam
JavaScript no es VietnamJavaScript no es Vietnam
JavaScript no es Vietnam
 
05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodos05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodos
 
Jquery parte 1
Jquery parte 1Jquery parte 1
Jquery parte 1
 
6.angular js
6.angular js6.angular js
6.angular js
 
Programación MySQL-Ejercicios
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejercicios
 
Practica 1
Practica 1Practica 1
Practica 1
 
Practica 1
Practica 1Practica 1
Practica 1
 

Angularjs Lógica de negocio

  • 1. Lógica de negocio en AngularJS
  • 2. Debug  Chrome + Batarang  $scope  Todos los navegadores  Muestra scope del elemento seleccionado  angular.element($0).scope();  Command Line API Reference  https://developer.chrome.com/devtools/docs/commandline-api
  • 3. Inyección de dependencias  Ubicación  angular.injector(['ng', 'myModule']);  angular.element($0).data().$injector;  Seleccionando el elemento que tiene el ng-app  TODO es singleton!!!
  • 4. Formas de inyectar  Método directo  NO recomendado. Problemas con minificación myModule.factory(‘myFactory’, function($scope){ … });  Asignar a la función una variable estática $inject var factory = function(scope) { … }; factory.$inject = [‘$scope’]; myModule.factory(‘myFactory’, factory);  Asignado los nombres en línea myModule.factory(‘myFactory’, [‘$scope’, function(scope) { … }]);
  • 5. Inyector  Métodos  annotate  has  get (patron ServiceLocator)  Invoke  Instatiate
  • 7. Factory  Injección por Invoque myModule.factory(‘myFactory’, […, function(…) { return { helloWorld: function() { console.log(‘hello world’); } }; }]);
  • 8. Service  Injección por Instantiate myModule.service(‘myService’, […, function(…) { this.helloWorld = function() { console.log('hello world'); }; }]);
  • 9. Provider  Injección por Instantiate  Puede inyectarse en el config “myProviderProvider” myModule.provider(‘myProvider’, […, function(…) { var _text = ''; function helloWorld() { console.log(_text); } this.setText(text) { _text = text; }; this.$get = function(...) { return helloWorld; }; }]);
  • 10. ControllerAs  Injección por Instantiate myModule.controller(‘myController’, function() { this.name = “Xavi”; }  Uso de this <body ng-controller="myController as alias"> <input type="text" ng-model="alias.name"> <span>{{alias.name}}</span> </body>
  • 11. Controller tradicional  Injección por Instantiate myModule.controller(‘myController’, function($scope) { $scope.name = “Xavi”; }  Uso de this <body ng-controller="myController"> <input type="text" ng-model="name"> <span>{{name}}</span> </body>
  • 12. Value  Puede almacenar:  Valores primitivos  Objetos js myModule.value(‘pi’, 3,1416); myModule.value(‘config’, { url: ‘http://...’, defaultPageSize: 20, ... });
  • 13. Constant  Puede inyectarse en el config myModule.constant(‘pi’, 3,1416); myModule.constant(‘config’, { url: ‘http://...’, defaultPageSize: 20, ... });
  • 14. DEMO Lógica de negocio
  • 15. Decorator  Intercepta la llamada  Factory, Service, Provider, y Directive myModule.config(['$provide', function (provide) { provide.decorator('myService', ['$delegate', function (delegate) { var previous = delegate.helloWorld; delegate.helloWorld = function() { return previous() + ‘!!!’; } return delegate; }]); }]); http://briantford.com/blog/angular-hacking-core
  • 16. Bibliografía  Sitio oficial  http://www.angular.js  Chrome y extension Batarang  http://www.chrome.com  https://chrome.google.com/webstore/detail/angularjs-batarang/ ighdmehidhipcmcojjgiloacoafjmpfk?hl=es
  • 17. Si quieres ampliar…  Curso Louesfera  http://www.louesfera.com/?s=angular&lang=es  En especial el capítulo 9  http://www.louesfera.com/2014/10/21/logica-negocio-angularjs/  Repositorio mgAngular  https://github.com/MagicCrudAngular/mgCrud

Notas do Editor

  1. Luego Pedro explicará como hacer la inyección no singleton
  2. Poner todos los elementos del obj módulo
  3. Por constructor
  4. Recomentación solo para el config
  5. alias es la función del controlador
  6. alias es la función del controlador
  7. Si helloWorld devolvia “Hello World”, ahora devuelve “Hello World!!!”