AngularJS 2.0 utilisera pleinement ECMAScript6, qui est la prochaine standardisation du JavaScript (et utilisera un compilateur EM6 => EM5 pour la compatibilité).
var obj = {'foo': 'bar'};
obj.foo == obj['foo'];
obj.foobar = 42;
obj['foobar'] = 21;
obj.method = function(){
console.log('I am here!');
};
obj.method();
Ou comment ne plus utiliser jQuery.
Ce paradigme regroupe les fonctions nécessaires en trois catégories :
AngularJS est un framework JavaScript qui permet :

La courbe d'apprentissage est en grande partie du au fait qu'AngularJS est un ensemble de composants et qu'il est impossible de tous les apprendre en meme temps. On se demandera souvent "pourquoi je dois faire comme ca" pour utiliser un certain composant avant d'avoir compris son fonctionnement.
<script src="chemin/vers/angular.js"></script>
ng-app<html ng-app="myApp">
Le JavaScript sera plutot mis à la fin du
afin de s'assurer que l'application s'affiche bien avant que les scripts soit télécharger.Le nom de l'application ("myApp") sera définis plus tards dans ce que l'on appelle un "module". ng-app n'est pas obligatoirement sur la balise html, mais là où l'application se trouve (d'où le fait de pouvoir faire plusieurs applications sur une seul page).

Mise à jour automatiquement gràce au "dirty checking".
Le "Scope" contient les modèles.
ng-model permet de lier un champs de formulaire à une valeur du modèle.
{{ qty * cost }} est une expression permettant l'affichage de valeur, également mis à jour automatiquement.
Basé sur des fichiers partials (HTML).
Voici quelques expressions valides :
{{ 1 + 2 }}
{{ a + b }}
{{ user.name }}
{{ items[index] }}
<input ng-model="cost" />
Permet de modifier le DOM. Définis une nouvelle balise ou un nouvel attribut HTML. Les directives s'écrivent en camelCase mais s'utilisent en lower-case.
Apache, nginx, ... Grunt, gulp.
git.npm install).npm start).http://localhost:8000/app/).view1 (app/view1/view1.html) pour :input.input.Lier l'input à une valeur en utilisant ng-model.
Expliquer les dossier node_modules et bower_components.
Un contrôleur :
scope de l'application.
Un service permet de réutiliser du code métier. Le scope est vu à la prochaine slide.
S'occupe d'une partie de l'application, il y aura donc plusieurs controleur. Un controleur peut etre inclus dans un autre pour s'occuper d'une sous-partie spécifique.
Un scope :
$scope sur chaque contrôleur.$rootScope pour le scope de l'application.Quelque caractéristiques :
{{ username }} -> $scope.username.$scope.$apply / $scope.$broadcast (propager les changements qui ont lieu en dehors d'AngularJS).Fichier JS :
angular.module('myApp.view1', [])
.controller('View1Controller', function($scope) {
$scope.name = 'Toto';
});
Fichier HTML :
<div ng-controller="View1Controller">
{{ name }}
</div>
Fichier JS :
angular.module('myApp.view1', [])
.controller('View1Controller', function($scope) {
$scope.name = 'Toto';
$scope.welcome = 'Bienvenue !';
});
angular.module('myApp.view2', [])
.controller('View2Controller', function($scope) {
$scope.name = 'Tutu';
});
Fichier HTML :
<div ng-controller="View1Controller">
{{ welcome }} {{ name }}
<div ng-controller="View2Controller">
{{ welcome }} {{ name }}
{{ welcome }} {{ $parent.name }}
</div>
</div>
Écoute pour un événement, listener est une fonction de la forme function(event, args).
Propage l'événement vers le bas. L'événement ne peut pas être arrêté.
Propage l'événement vers le haut. L'événement peut être arrêté.
components, view1 et view2 dans app.body en ne laissant que les scripts angular.js et app.js.app.js et recréer un module todo avec un controlleur TodoController.ng-app égale à todo.Ajouter une liste d'objet au scope du module todo de la forme donné (id doit etre différent pour chaque objet).
{'id' : 1, 'date': Date, 'title': 'Finir le TP', 'done': false}
Afficher la liste de taches avec le titre et le statut de chaque tache (done).
Utiliser ng-repeat pour lister les taches. Utiliser un bouton avec ng-click pour les actions.
Un filtre :
|.:.{{ [3, 2, 1, 4] | limitTo:2 }}
{{ "Bonjour" | lowercase }}
Fichier JS :
angular.module('myApp.filters', [])
.filter('capitalize', function(){
return function(input) {
if (input) {
return input[0].toUpperCase() + input.slice(1);
}
}
});
Fichier HTML :
{{ 'Je SuiS un TeXte uN peU biZaRRe' | lowercase | capitalize }}
$filter$filter est un service permettant d'utiliser les filtres en javascript :
var upercase = $filter('upercase');
var uper = upercase('Bonjour'); // uper === 'BONJOUR'
Utiliser les filtres date, orderBy et filter.
Une route :
partial)./user/123angular.module('myApp', ['ngRoute'])
.config(function($routeProvider){
$routeProvider
.when('/', {
templateUrl: 'partials/home.html',
})
.when('/todo/:id', {
templateUrl: 'partials/todo.html',
controller: 'TodoController',
})
.otherwise({redirectTo: '/'});
});
$routeParamsangular.module('todo', [])
.controller('TodoController', function($scope, $routeParams) {
$scope.id = $routeParams.id;
// ...
});
ngRoute est un module à part et doit être ajouté aux dépendances de l'application.
Une route n'a pas forcément de contrôleur associé, ni de template.
index.html :
<html ng-app="myApp">
<head>[...]</head>
<body>
[...]
<div ng-view></div>
[...]
<script src="angular.js"></script>
<script src="angular-route.js"></script>
<script src="app.js"></script>
</body>
</html>
partials/home.html :
<h1>Bienvenue !</h1>
partials/todo.html :
<h1>{{ todo.name }}</h1>
ng-view indique l'endroit ou les partials seront affichés.
C'est comme cela que view1 et view2 sont gérées dans angular-seed.
/#/todo/42./todo/42.angular.module('myApp', ['ngRoute'])
.config(['$locationProvider'], function($locationProvider) {
$locationProvider.html5Mode(true);
});
Le serveur doit rediriger toutes les requêtes vers l'index.html.
$location permet de récuperer ou de changer l'url actuelle. Il utilise l'api d'historique d'HTML5 si activée et disponible.
.path().search().hash().url()
Les changements de # sont naturellements sauvegardé par le navigateur.
En mode HTML5, l'api de l'historique est utilisé.
Quatre événements sont propagés par le service $route.
$routeChangeStart : Avant la résolution de l'URL.$routeChangeSuccess : Après la résolution de l'URL.$routeChangeError : En cas d'erreur.$routeUpdate : Si reloadOnSearch est mis à false, et si le contrôleur est le même.ngRoutes.Utiliser le $rootScope pour stocker les taches afin de les avoir sur tout les controleurs. (Mauvaise pratique ! Un service devrait etre utilisé à la place).
| Table of contents | t |
|---|---|
| Exposé | ESC |
| Autoscale | e |
| Full screen slides | f |
| Presenter view | p |
| Source files | s |
| Slide numbers | n |
| Blank screen | b |
| Notes | 2 |
| Help | h |