5. FRIENDLY BUT DEADLY PERSON
If you are || you know someone who like those stuff just call me at:
+213 0 - what-ever !
6. AGENDA !
1. What is Angular ?
2. What is a SPA
3. Angularjs Anatomy :
1. App vs module
2. Services
3. Controllers
4. Factories
5. Directives
So Let's Rock in !
7. First of all :
In order to make things even clearer !
11. AngularJS is :
1. An intuitive framework that makes it easy to organize
your code.
2. An MV* framework : MVC / MVVM / MVP ...
3. A two way data binding framework : a data
synchronization method that let the value change in
model and view side.
14. Spa !
"Single-Page Applications (SPAs) are Web apps that load a
Single HTML page and dynamically update that page as
the user interacts with the app."
Mike Wasson
Or :
"An awesome relatively new tech for awesome cool and
UI/UX capable application that makes you feel like a JS guru
and makes you looks good in public aka: "Khshine"
Me
16. Why we don't use Jquery
Jquery capabilites are framed in the DOM manipulation so
the framework can't handle certain SPAs needed
behaviours such as routing & role decaupling aka SOC ...
20. The What ?
Consider the module as your container, that container can
have your application different parts : Controllers / Filters
/ Services / Directives / Constants / Values / Interceptors
...
21. THE HOW!
Angularjs apps like many other framework have a View
side and a Js files which attach to it and manage it so in
order to have a fully working application we need the
following:
22. In JS Side !
// in the app.js file or what ever you want to name it
angular.module('application name', ['External modules / it's blank by default]);
//or
var app = angular.module('application name', []);
// now we use the handled variable instead
app.
*
*
*
*
23. In View Side !
Template / Index / Fragment ... *
<html ng‐app="Application Name">
<head>
<!‐‐ Something HERE ! ‐‐>
</head>
<body>
<!‐‐ Something HERE ! ‐‐>
</body>
25. The What ?
A substitutable objects that are wired together using DI.
You can use services to organize and share code across
your app
From the angularjs.org site
26. Angular support two type of services:
1. Core services: Are the ones shiped with angular outside of the box
which mean that we can use them whenever we want.
- A core service is prefixed by the : "$" sign like : $http / $q / $window ...
2. Custom services: Are the ones that we write with and for angular to
suite our special needs and also we can use them whenever we want.
27.
28. Services in Angular have two different names and
manners to code them, we have:
1. Factories
2. Services
29. So far we have a anything like a SPA
Let's change it !
31. AngularJS services are a poviders of somehow they provide
something when they called
and because of that we have the Routing service
represented in the officiel ngRoute module. or other the
new awesome module the ui-router module.
let's $digest that !
33. Let's analyse the code :
1. $stateProvider != an Angularjs Service, it's a ui-router
service
2. the State represent a route a urlproperty in our
queryString
3. Each route need 4 main things :
1. A Url
2. A Name
3. A Controller - we will talk about that in the next slide -
4. A template : an html page that shows our needed info
34. WHATS IS A CONTROLLER!
Angularjs controller is a javascript constructor function
that is used to augment the Angular Scope
From the angularjs.org site
35. The How !
// 1/2 ways to write controllers this way let you focus on
// your javascript code and push the angular configuration away
var Classy = function($scope){
$scope.name = "houssem";
};
// NG Associate the controller to the app in hand !
angular.module('app').controller('Class', Classy);
Or
// 2nd way to write your angurlarjs controller using the angularjs documented way
angular.module('app').controller('Class', function($scope){
$scope.name = "houssem";
};
37. So after minification
We are goins to have the folowing
var Class=function(s){s.name="houssem";};
angular.module('app').controller('Class', Classy);
So one big mess of unreadable code
+
Unkown ng arguments !
=
38.
39. We Need a solution !
Dont fear "DI" is here !
But How? and Who it's gonna FIX the problem!
40. The How !
// 1/2 ways to write controllers this way let you focus on
// your javascript code and push the angular configuration away
var Classy = function($scope){
$scope.name = "houssem";
};
// 'DI' magic
Classy.$inject = ['$scope'];
// NG Associate the controller to the app in hand !
angular.module('app').controller('Class', Classy);
so after minification we're going to have the following
var Classy=function(s){s.name="houssem";};Classy.$inject=['$scope'];
angular.module('app').controller('Class', Classy);
The result : Same mess with correct output and a happy
console
41. WHATS IS A FACTORY!
Problimatic : The Web need DATA
As a solution:
AngularJS factory can help us getting the requiried informations in order to
use it in data needed places.
42. The Factory syntax !
// 1/2 ways to write factories this way let you focus on
// your javascript code and push the angular configuration away
var ClassyFactory = function($http){
return {
getGDGBlidaMembers : function(year){
return $http.get('/DATA ENDPOINT ROUTE/'+year);
}
};
// DI
ClassyFactory.$inject = ['$http'];
// NG Associate the factory to the app in hand !
angular.module('app').factory('ClassyFactory', ClassyFactory);
PS : we're using the revealing pattern ;-)
44. Now we have the needed data, let's use it !
But How ?
45. Simply declare it as dependency in your Controller
var Classy = function($scope, ClassyFacotry, INotify){
ClassyFactory.getGDGBlidaMembers(2014)
.success(response) {
$scope.data = response.members;
INotify.onSuccess('Data Gathring', 'Done with success !');
}.error(response){
INotify.onError('An error has occured', response.err_message + ' !');
}
});
};
//DI
Classy.$inject = ['$scope', 'ClassyFacotry', 'INotify'];
// NG Associate the controller to the app in hand !
angular.module('app').controller('Class', Classy);
Your now well covered !
Display It ^_^
46. WHATS IS A DIRECTIVE !
For me a Directive is
HTML5 ++
47. But What's exactly i a Directive?
A directive is a new concept introduced in Angularjs, and
used to :
1. To give our Page / Template / View a new set of functionnality.
2. Let us handle our JS logic without extra work.
3. Best part is : Angularjs let and gives you the power of creating
new directives to suit our needs.
48. That's looks promising but how Exactly it works ?
1. Consider the directive as : your regular HTML5 markup
Attribute.
<input type="text" name="email" awesome‐attrib‐directive="info" required="true">
2. Consider the directive as : your new regular HTML5
markup Tag.
<gdg‐awesome required="true"></gdg‐awesome>
3. Or Both !
<gdg‐awesome grpe‐name="GDG" grpe‐loc="Blida"></gdg‐awesome>
49. Angular is already have a really cool set of core directives
And more ...
50. That was it ! / Keep in touch with me !
G+ : +HoussemYahiaoui
Twittre : @free_g33k
Facebook : fcb.com/houssem.intern0t
#peace