SlideShare une entreprise Scribd logo
1  sur  9
Télécharger pour lire hors ligne
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

Cours java avance débutant facile l'essentiel swing ,events
Cours java avance débutant facile l'essentiel swing ,events Cours java avance débutant facile l'essentiel swing ,events
Cours java avance débutant facile l'essentiel swing ,events Houssem Hamrouni
 
Merise 60 affaires classées
Merise 60 affaires classées  Merise 60 affaires classées
Merise 60 affaires classées oussama ben rejeb
 
Intelligence Artificielle - Systèmes experts
Intelligence Artificielle - Systèmes expertsIntelligence Artificielle - Systèmes experts
Intelligence Artificielle - Systèmes expertsMohamed Heny SELMI
 
Introduction au Deep Learning
Introduction au Deep Learning Introduction au Deep Learning
Introduction au Deep Learning Niji
 
Tp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-EclipseTp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-EclipseLilia Sfaxi
 
réseaux de neurones artificiels
réseaux de neurones artificiels réseaux de neurones artificiels
réseaux de neurones artificiels Oussama Werfelli
 
Exercices sur-python-turtle-corrige
Exercices sur-python-turtle-corrigeExercices sur-python-turtle-corrige
Exercices sur-python-turtle-corrigeWajihBaghdadi1
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux javaInes Ouaz
 
Cours python
Cours pythonCours python
Cours pythonsalmazen
 
Rapport de projet de conception et de développement
Rapport de projet de conception et de développementRapport de projet de conception et de développement
Rapport de projet de conception et de développementDonia Hammami
 
Le Reseau De Neurones
Le Reseau De NeuronesLe Reseau De Neurones
Le Reseau De Neuronesguestf80d95
 
Rapport pfe 2017 Système de gestion des rendez-vous médicaux
Rapport pfe 2017 Système de gestion des rendez-vous médicaux Rapport pfe 2017 Système de gestion des rendez-vous médicaux
Rapport pfe 2017 Système de gestion des rendez-vous médicaux fehmi arbi
 
Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)
Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)
Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)Ardesi Midi-Pyrénées
 
classification des images couleurs par un réseau de neurone quaternionique ré...
classification des images couleurs par un réseau de neurone quaternionique ré...classification des images couleurs par un réseau de neurone quaternionique ré...
classification des images couleurs par un réseau de neurone quaternionique ré...Amal Targhi
 
Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...Ilyas CHAOUA
 
Automatique systémes linéaires et non linéaires 2
Automatique   systémes linéaires et non linéaires 2Automatique   systémes linéaires et non linéaires 2
Automatique systémes linéaires et non linéaires 2badr zaimi
 
Algorithmique et Structures de Données II
Algorithmique et Structures de Données IIAlgorithmique et Structures de Données II
Algorithmique et Structures de Données IIRiadh Bouslimi
 

Tendances (20)

Cours java avance débutant facile l'essentiel swing ,events
Cours java avance débutant facile l'essentiel swing ,events Cours java avance débutant facile l'essentiel swing ,events
Cours java avance débutant facile l'essentiel swing ,events
 
Merise 60 affaires classées
Merise 60 affaires classées  Merise 60 affaires classées
Merise 60 affaires classées
 
Intelligence Artificielle - Systèmes experts
Intelligence Artificielle - Systèmes expertsIntelligence Artificielle - Systèmes experts
Intelligence Artificielle - Systèmes experts
 
Introduction au Deep Learning
Introduction au Deep Learning Introduction au Deep Learning
Introduction au Deep Learning
 
Tp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-EclipseTp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-Eclipse
 
réseaux de neurones artificiels
réseaux de neurones artificiels réseaux de neurones artificiels
réseaux de neurones artificiels
 
Exercices sur-python-turtle-corrige
Exercices sur-python-turtle-corrigeExercices sur-python-turtle-corrige
Exercices sur-python-turtle-corrige
 
Rapport Stage
Rapport StageRapport Stage
Rapport Stage
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux java
 
Réseaux de neurones
Réseaux de neurones Réseaux de neurones
Réseaux de neurones
 
Cours python
Cours pythonCours python
Cours python
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 
Rapport de projet de conception et de développement
Rapport de projet de conception et de développementRapport de projet de conception et de développement
Rapport de projet de conception et de développement
 
Le Reseau De Neurones
Le Reseau De NeuronesLe Reseau De Neurones
Le Reseau De Neurones
 
Rapport pfe 2017 Système de gestion des rendez-vous médicaux
Rapport pfe 2017 Système de gestion des rendez-vous médicaux Rapport pfe 2017 Système de gestion des rendez-vous médicaux
Rapport pfe 2017 Système de gestion des rendez-vous médicaux
 
Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)
Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)
Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)
 
classification des images couleurs par un réseau de neurone quaternionique ré...
classification des images couleurs par un réseau de neurone quaternionique ré...classification des images couleurs par un réseau de neurone quaternionique ré...
classification des images couleurs par un réseau de neurone quaternionique ré...
 
Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...Conception et réalisation d’un Système d’information des étudiants du départe...
Conception et réalisation d’un Système d’information des étudiants du départe...
 
Automatique systémes linéaires et non linéaires 2
Automatique   systémes linéaires et non linéaires 2Automatique   systémes linéaires et non linéaires 2
Automatique systémes linéaires et non linéaires 2
 
Algorithmique et Structures de Données II
Algorithmique et Structures de Données IIAlgorithmique et Structures de Données II
Algorithmique et Structures de Données II
 

Similaire à Chapitre 2-Data binding.pdf

MVVM de A à Z
MVVM de A à ZMVVM de A à Z
MVVM de A à ZMicrosoft
 
C5 Javascript French
C5 Javascript FrenchC5 Javascript French
C5 Javascript FrenchVlad Posea
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++coursuniv
 
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 HTML5SmartnSkilled
 
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 2016Tarik Zakaria Benmerar
 
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.pdfHeartKing10
 
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 classesAmina HAMEURLAINE
 
Formation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetFormation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetkemenaran
 
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 --- 27megaplanet20
 
La puissance des pseudo-éléments
La puissance des pseudo-élémentsLa puissance des pseudo-éléments
La puissance des pseudo-élémentsGeoffrey Croftє
 
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 Flexdavid deraedt
 

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

Chap1Concepts-FondamentauxBD.pdf
Chap1Concepts-FondamentauxBD.pdfChap1Concepts-FondamentauxBD.pdf
Chap1Concepts-FondamentauxBD.pdfBoubakerMedanas
 
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.pdfBoubakerMedanas
 
Chapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfChapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfBoubakerMedanas
 
Chapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfChapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfBoubakerMedanas
 
Chapitre 2-Data binding.pdf
Chapitre 2-Data binding.pdfChapitre 2-Data binding.pdf
Chapitre 2-Data binding.pdfBoubakerMedanas
 

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