SlideShare une entreprise Scribd logo
Chapitre 2
Liaison de Données
Data Binding
Ahlem ELHAJ
Multimédia et Développement Web – 2ème année – Semestre 1
ISET de Sousse
Développement Framework Coté Client - Angular
Introduction
 Angular offre la fonctionnalité de liaison de données (data
binding)
 Le data binding
◼ permet de coordonner les vues utilisateur avec les valeurs des
données de l’application,
◼ autrement dit un moyen de communication entre l’application et le
HTML.
 Angular définit 4 mécanismes de liaison de données :
◼ Interpolation
◼ Liaison de propriété (Property Binding)
◼ Liaison d’événement (Event Binding)
◼ Liaison bidirectionnelle (Two-Way Binding)
 Ce chapitre s’intéresse aux 3 premiers mécanismes.
2
Interpolation
 Manière la plus basique d'émettre des données issues du
code TypeScript vers le template.
 Pour afficher la valeur d’une propriété du composant dans
son template html : {{nomPropriété}}
 Ex. Pour afficher la valeur de la propriété title de la classe
AppComponent dans le template HTML de ce composant :
 NB. Angular convertit toujours l’expression entre doubles
accolades vers une chaîne de caractères avant de
l’envoyer au template.
3
<h2>{{title}} app is running</h2>
Property Binding -Liaison de propriété
 Autre façon de transfert des données du ts vers le html.
 Modifier dynamiquement les propriétés d'un élément du
DOM en fonction de données dans le TypeScript.
 S’applique sur les différentes propriétés des éléments du
DOM : value, hidden, src, alt, …
 Syntaxe : <balise [attribut]='nomPropriété’ >
 La classe ts de ce composant doit avoir les attributs
imageUrl, imageTexteAlt et estActif
 Le ! signifie la négation 4
<img src="image.jpg" alt="image non disponible">
<button disabled>Votre panier</button>
<img [src]="imageUrl" [alt]="imageTexteAlt">
<button [disabled]="!estActif">Votre panier</button>
Property Binding -Liaison de propriété
 Que se passe-t-il si imageUrl, imageTexteAlt ou estActif
n’est pas un attribut de la classe de ce composant ?
◼ Réponse : Erreur de compilation
 Peut-on dans cet exemple utiliser l’interpolation à la
place du property binding ? Sachant que la classe du
composant possède
◼ imageUrl et imageTexteAlt comme attributs de type string
◼ estActif comme attribut de type boolean
◼ Réponse : oui pour imageUrl et imageTexteAlt mais non pour estActif
◼ à discuter en classe !
5
<img [src]="imageUrl" [alt]="imageTexteAlt">
<button [disabled]="!estActif">Votre panier</button>
Event Binding -Liaison d’évènement
 L'interpolation et le "property binding"
◼ permettent de contrôler le contenu affiché (transfert ts vers DOM).
◼ Mais ne permettent pas de gérer les interactions avec
l'utilisateur (transfert DOM vers ts).
 Il faut ajouter des "listeners" d'évènements déclenchés
sur les éléments du DOM afin de modifier l'état de
l’application et mettre à jour la "view".
 Ce type de binding permet
◼ d’écouter les évènements du DOM (click, mouseover, keydown,
submit, focus, drop …)
◼ et d’appeler une action (méthode) de la classe du composant pour
traiter cet évènement.
6
Event Binding -Liaison d’évènement (2)
 Le nom de l’évènement est entouré par des parenthèses :
 La méthode onSave() de la classe du composant est
exécutée à chaque fois que l’utilisateur clique sur le
bouton.
 Et si on a besoin de données supplémentaires d’un
événement ?
◼ quelle touche est enfoncée ?
◼ quelles sont les coordonnées de la souris à l’écran ?
7
<button (click)="onSave()">Save<button>
Event Binding -Liaison d’évènement (3)
 La valeur de l'événement peut être récupérée via la variable
$event et transmise à la méthode.
 Dans le template HTML :
 Dans le code du composant (ts) :
 Noter le $ devant event dans l’appel de la méthode, pas dans
sa définition.
 Le ? est utilisé pour que le paramètre soit optionnel.
8
<input type="text" (keydown)="montrerTouche($event)">
montrerTouche(event ? : KeyboardEvent) {
alert(event?.key); }
Conclusion
 L’utilisation d’un Framework qui assure le data binding
facilite considérablement le travail du développeur
◼ ce dernier n’a qu’à déclarer les données et les éléments HTML à
cibler, et le Framework s’occupera du reste.
 Sens de transfert différent entre les différents
mécanismes:
◼ Interpolation et liaison de propriété : du composant (ts) vers le
DOM (html)
◼ Liaison d’évènement : du DOM vers le composant
◼ Two-way binding : dans les deux sens
9

Contenu connexe

Tendances

Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Sofien Benrhouma
 

Tendances (20)

1601896849 rapport fluttercopie
1601896849 rapport fluttercopie1601896849 rapport fluttercopie
1601896849 rapport fluttercopie
 
PFE :: Application de gestion des dus d'enseignement
PFE :: Application de gestion des dus d'enseignementPFE :: Application de gestion des dus d'enseignement
PFE :: Application de gestion des dus d'enseignement
 
Installer et configurer NAGIOS sous linux
Installer et configurer NAGIOS sous linuxInstaller et configurer NAGIOS sous linux
Installer et configurer NAGIOS sous linux
 
Vers une plateforme intelligente pour la prévision des maladies végétales
Vers une plateforme intelligente pour la prévision des maladies végétalesVers une plateforme intelligente pour la prévision des maladies végétales
Vers une plateforme intelligente pour la prévision des maladies végétales
 
Rapport PFE: Gestion de Parc Informatique
Rapport PFE: Gestion de Parc InformatiqueRapport PFE: Gestion de Parc Informatique
Rapport PFE: Gestion de Parc Informatique
 
Chp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesChp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications Mobiles
 
Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...
 
Design Pattern introduction
Design Pattern introductionDesign Pattern introduction
Design Pattern introduction
 
Présentation PFE "Refonte et déploiement d’une solution de messagerie en util...
Présentation PFE "Refonte et déploiement d’une solution de messagerie en util...Présentation PFE "Refonte et déploiement d’une solution de messagerie en util...
Présentation PFE "Refonte et déploiement d’une solution de messagerie en util...
 
Rapport PFE ingénieur réseaux marwen SAADAOUI ( Juin 2018 )
Rapport PFE ingénieur réseaux marwen SAADAOUI ( Juin 2018 )Rapport PFE ingénieur réseaux marwen SAADAOUI ( Juin 2018 )
Rapport PFE ingénieur réseaux marwen SAADAOUI ( Juin 2018 )
 
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
 
Uml
UmlUml
Uml
 
Jenkins
JenkinsJenkins
Jenkins
 
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
 
Rapport du Projet de Fin d'année Génie informatique
Rapport du Projet de Fin d'année Génie informatique Rapport du Projet de Fin d'année Génie informatique
Rapport du Projet de Fin d'année Génie informatique
 
diagramme de classe
diagramme de classediagramme de classe
diagramme de classe
 
Rapport de stage d'été
Rapport de stage d'étéRapport de stage d'été
Rapport de stage d'été
 
Applications Android - cours 6 : Structure d’un projet Android
Applications Android - cours 6 :  Structure d’un projet AndroidApplications Android - cours 6 :  Structure d’un projet Android
Applications Android - cours 6 : Structure d’un projet Android
 
Rapport pfe talan_2018_donia_hammami
Rapport pfe talan_2018_donia_hammamiRapport pfe talan_2018_donia_hammami
Rapport pfe talan_2018_donia_hammami
 
Rapport PFE "Conception et développement d'un Portail web pour le Smart Met...
Rapport  PFE  "Conception et développement d'un Portail web pour le Smart Met...Rapport  PFE  "Conception et développement d'un Portail web pour le Smart Met...
Rapport PFE "Conception et développement d'un Portail web pour le Smart Met...
 

Similaire à Chapitre 2-Data binding.pdf

C5 Javascript French
C5 Javascript FrenchC5 Javascript French
C5 Javascript French
Vlad Posea
 
laravel.sillo.org-Cours Laravel 10 les bases la validation.pdf
laravel.sillo.org-Cours Laravel 10  les bases  la validation.pdflaravel.sillo.org-Cours Laravel 10  les bases  la validation.pdf
laravel.sillo.org-Cours Laravel 10 les bases la validation.pdf
HeartKing10
 

Similaire à Chapitre 2-Data binding.pdf (20)

Cours wpf avancé
Cours wpf avancéCours wpf avancé
Cours wpf avancé
 
Manualjquery
ManualjqueryManualjquery
Manualjquery
 
Les Activités.pdf
Les Activités.pdfLes Activités.pdf
Les Activités.pdf
 
MVVM de A à Z
MVVM de A à ZMVVM de A à Z
MVVM de A à Z
 
C5 Javascript
C5 JavascriptC5 Javascript
C5 Javascript
 
C5 Javascript French
C5 Javascript FrenchC5 Javascript French
C5 Javascript French
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++
 
Cours 2 les composants
Cours 2 les composantsCours 2 les composants
Cours 2 les composants
 
Rapport tp3 j2ee
Rapport tp3 j2eeRapport tp3 j2ee
Rapport tp3 j2ee
 
Support tutoriel : Créer votre jeu en HTML5
Support tutoriel : Créer votre jeu en HTML5Support tutoriel : Créer votre jeu en HTML5
Support tutoriel : Créer votre jeu en HTML5
 
Web Components et Polymer 2 - GDG Algiers DevFest 2016 - 3 Décembre 2016
Web Components et Polymer 2 - GDG Algiers DevFest 2016 - 3 Décembre 2016Web Components et Polymer 2 - GDG Algiers DevFest 2016 - 3 Décembre 2016
Web Components et Polymer 2 - GDG Algiers DevFest 2016 - 3 Décembre 2016
 
laravel.sillo.org-Cours Laravel 10 les bases la validation.pdf
laravel.sillo.org-Cours Laravel 10  les bases  la validation.pdflaravel.sillo.org-Cours Laravel 10  les bases  la validation.pdf
laravel.sillo.org-Cours Laravel 10 les bases la validation.pdf
 
Poo en c++ les relations entre classes
Poo en c++ les relations entre classesPoo en c++ les relations entre classes
Poo en c++ les relations entre classes
 
Backbonejs presentation
Backbonejs presentationBackbonejs presentation
Backbonejs presentation
 
Formation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetFormation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objet
 
5.ateliers avancés
5.ateliers avancés5.ateliers avancés
5.ateliers avancés
 
Uml: Diagrammes de classes -- Concepts avances --- 27
Uml: Diagrammes de classes -- Concepts avances --- 27Uml: Diagrammes de classes -- Concepts avances --- 27
Uml: Diagrammes de classes -- Concepts avances --- 27
 
La puissance des pseudo-éléments
La puissance des pseudo-élémentsLa puissance des pseudo-éléments
La puissance des pseudo-éléments
 
Fondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application FlexFondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application Flex
 

Plus de BoubakerMedanas (9)

POO-Cours.pdf
POO-Cours.pdfPOO-Cours.pdf
POO-Cours.pdf
 
Chap-SQL-LID-P1.pdf
Chap-SQL-LID-P1.pdfChap-SQL-LID-P1.pdf
Chap-SQL-LID-P1.pdf
 
Chap1Concepts-FondamentauxBD.pdf
Chap1Concepts-FondamentauxBD.pdfChap1Concepts-FondamentauxBD.pdf
Chap1Concepts-FondamentauxBD.pdf
 
course1-Intrduction-to-the-game-industry.pdf
course1-Intrduction-to-the-game-industry.pdfcourse1-Intrduction-to-the-game-industry.pdf
course1-Intrduction-to-the-game-industry.pdf
 
Chapitre-3-Routage.pdf
Chapitre-3-Routage.pdfChapitre-3-Routage.pdf
Chapitre-3-Routage.pdf
 
Chapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfChapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdf
 
Chapitre-3-Routage.pdf
Chapitre-3-Routage.pdfChapitre-3-Routage.pdf
Chapitre-3-Routage.pdf
 
Chapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfChapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdf
 
Chapitre 2-Data binding.pdf
Chapitre 2-Data binding.pdfChapitre 2-Data binding.pdf
Chapitre 2-Data binding.pdf
 

Chapitre 2-Data binding.pdf

  • 1. Chapitre 2 Liaison de Données Data Binding Ahlem ELHAJ Multimédia et Développement Web – 2ème année – Semestre 1 ISET de Sousse Développement Framework Coté Client - Angular
  • 2. Introduction  Angular offre la fonctionnalité de liaison de données (data binding)  Le data binding ◼ permet de coordonner les vues utilisateur avec les valeurs des données de l’application, ◼ autrement dit un moyen de communication entre l’application et le HTML.  Angular définit 4 mécanismes de liaison de données : ◼ Interpolation ◼ Liaison de propriété (Property Binding) ◼ Liaison d’événement (Event Binding) ◼ Liaison bidirectionnelle (Two-Way Binding)  Ce chapitre s’intéresse aux 3 premiers mécanismes. 2
  • 3. Interpolation  Manière la plus basique d'émettre des données issues du code TypeScript vers le template.  Pour afficher la valeur d’une propriété du composant dans son template html : {{nomPropriété}}  Ex. Pour afficher la valeur de la propriété title de la classe AppComponent dans le template HTML de ce composant :  NB. Angular convertit toujours l’expression entre doubles accolades vers une chaîne de caractères avant de l’envoyer au template. 3 <h2>{{title}} app is running</h2>
  • 4. Property Binding -Liaison de propriété  Autre façon de transfert des données du ts vers le html.  Modifier dynamiquement les propriétés d'un élément du DOM en fonction de données dans le TypeScript.  S’applique sur les différentes propriétés des éléments du DOM : value, hidden, src, alt, …  Syntaxe : <balise [attribut]='nomPropriété’ >  La classe ts de ce composant doit avoir les attributs imageUrl, imageTexteAlt et estActif  Le ! signifie la négation 4 <img src="image.jpg" alt="image non disponible"> <button disabled>Votre panier</button> <img [src]="imageUrl" [alt]="imageTexteAlt"> <button [disabled]="!estActif">Votre panier</button>
  • 5. Property Binding -Liaison de propriété  Que se passe-t-il si imageUrl, imageTexteAlt ou estActif n’est pas un attribut de la classe de ce composant ? ◼ Réponse : Erreur de compilation  Peut-on dans cet exemple utiliser l’interpolation à la place du property binding ? Sachant que la classe du composant possède ◼ imageUrl et imageTexteAlt comme attributs de type string ◼ estActif comme attribut de type boolean ◼ Réponse : oui pour imageUrl et imageTexteAlt mais non pour estActif ◼ à discuter en classe ! 5 <img [src]="imageUrl" [alt]="imageTexteAlt"> <button [disabled]="!estActif">Votre panier</button>
  • 6. Event Binding -Liaison d’évènement  L'interpolation et le "property binding" ◼ permettent de contrôler le contenu affiché (transfert ts vers DOM). ◼ Mais ne permettent pas de gérer les interactions avec l'utilisateur (transfert DOM vers ts).  Il faut ajouter des "listeners" d'évènements déclenchés sur les éléments du DOM afin de modifier l'état de l’application et mettre à jour la "view".  Ce type de binding permet ◼ d’écouter les évènements du DOM (click, mouseover, keydown, submit, focus, drop …) ◼ et d’appeler une action (méthode) de la classe du composant pour traiter cet évènement. 6
  • 7. Event Binding -Liaison d’évènement (2)  Le nom de l’évènement est entouré par des parenthèses :  La méthode onSave() de la classe du composant est exécutée à chaque fois que l’utilisateur clique sur le bouton.  Et si on a besoin de données supplémentaires d’un événement ? ◼ quelle touche est enfoncée ? ◼ quelles sont les coordonnées de la souris à l’écran ? 7 <button (click)="onSave()">Save<button>
  • 8. Event Binding -Liaison d’évènement (3)  La valeur de l'événement peut être récupérée via la variable $event et transmise à la méthode.  Dans le template HTML :  Dans le code du composant (ts) :  Noter le $ devant event dans l’appel de la méthode, pas dans sa définition.  Le ? est utilisé pour que le paramètre soit optionnel. 8 <input type="text" (keydown)="montrerTouche($event)"> montrerTouche(event ? : KeyboardEvent) { alert(event?.key); }
  • 9. Conclusion  L’utilisation d’un Framework qui assure le data binding facilite considérablement le travail du développeur ◼ ce dernier n’a qu’à déclarer les données et les éléments HTML à cibler, et le Framework s’occupera du reste.  Sens de transfert différent entre les différents mécanismes: ◼ Interpolation et liaison de propriété : du composant (ts) vers le DOM (html) ◼ Liaison d’évènement : du DOM vers le composant ◼ Two-way binding : dans les deux sens 9