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

Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOpsMicrosoft
 
Docker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerThibaut Marmin
 
Intégration continue et déploiement continue avec Jenkins
Intégration continue et déploiement continue avec JenkinsIntégration continue et déploiement continue avec Jenkins
Intégration continue et déploiement continue avec JenkinsKokou Gaglo
 
Android-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intentsAndroid-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intentsLilia Sfaxi
 
Cycles de vie d'un logiciel
Cycles de vie d'un logicielCycles de vie d'un logiciel
Cycles de vie d'un logicielRabia AZIZA
 
Magento 2 Database Tables, Schema, Main tables for main features of Magento 2...
Magento 2 Database Tables, Schema, Main tables for main features of Magento 2...Magento 2 Database Tables, Schema, Main tables for main features of Magento 2...
Magento 2 Database Tables, Schema, Main tables for main features of Magento 2...gideonvbabu
 
KITE Network Instrumentation: Advanced WebRTC Testing
KITE Network Instrumentation: Advanced WebRTC TestingKITE Network Instrumentation: Advanced WebRTC Testing
KITE Network Instrumentation: Advanced WebRTC TestingAlexandre Gouaillard
 
Chp4 - Diagramme de Séquence
Chp4 - Diagramme de SéquenceChp4 - Diagramme de Séquence
Chp4 - Diagramme de SéquenceLilia Sfaxi
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012devCAT Studio, NEXON
 
Learning git
Learning gitLearning git
Learning gitSid Anand
 

Tendances (20)

Cours 3 les directives
Cours 3 les directivesCours 3 les directives
Cours 3 les directives
 
Cours 1 introduction
Cours 1 introductionCours 1 introduction
Cours 1 introduction
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOps
 
Docker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à Docker
 
김동건, 갈망의 아궁이
김동건, 갈망의 아궁이김동건, 갈망의 아궁이
김동건, 갈망의 아궁이
 
Jenkins
JenkinsJenkins
Jenkins
 
Intégration continue et déploiement continue avec Jenkins
Intégration continue et déploiement continue avec JenkinsIntégration continue et déploiement continue avec Jenkins
Intégration continue et déploiement continue avec Jenkins
 
What is Docker
What is Docker What is Docker
What is Docker
 
Android-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intentsAndroid-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intents
 
Cycles de vie d'un logiciel
Cycles de vie d'un logicielCycles de vie d'un logiciel
Cycles de vie d'un logiciel
 
Mise en oeuvre des framework de machines et deep learning v1
Mise en oeuvre des framework de machines et deep learning v1 Mise en oeuvre des framework de machines et deep learning v1
Mise en oeuvre des framework de machines et deep learning v1
 
Magento 2 Database Tables, Schema, Main tables for main features of Magento 2...
Magento 2 Database Tables, Schema, Main tables for main features of Magento 2...Magento 2 Database Tables, Schema, Main tables for main features of Magento 2...
Magento 2 Database Tables, Schema, Main tables for main features of Magento 2...
 
KITE Network Instrumentation: Advanced WebRTC Testing
KITE Network Instrumentation: Advanced WebRTC TestingKITE Network Instrumentation: Advanced WebRTC Testing
KITE Network Instrumentation: Advanced WebRTC Testing
 
Présentation Docker
Présentation DockerPrésentation Docker
Présentation Docker
 
Github
GithubGithub
Github
 
Chp4 - Diagramme de Séquence
Chp4 - Diagramme de SéquenceChp4 - Diagramme de Séquence
Chp4 - Diagramme de Séquence
 
【Unity道場 2016】パーティクル講座
【Unity道場 2016】パーティクル講座【Unity道場 2016】パーティクル講座
【Unity道場 2016】パーティクル講座
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012
 
Squid
SquidSquid
Squid
 
Learning git
Learning gitLearning git
Learning git
 

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