Vue : construire une application web (école d'ingénieur) · Chapitre 2 · Application directe du cours
Le signe inférieur
Gabarits et directives · niveau 3 (difficile)
Énoncé
Avec setup() { return { prix: 32, quantite: 2 }; }, qu'affiche cette page, écrite dans le <body> ? Que dit la console ? Proposer deux corrections.
<ol id="app">
<li>{{ prix < 50 }}</li>
<li>{{ quantite<prix }}</li>
<li>Fin de la liste</li>
</ol>Corrigé
La console signale une erreur de compilation, et le HTML produit est abîmé :
[Vue warn]: Template compilation error: Invalid end tag.
2 | <li>{{ prix < 50 }}</li>
3 | <li>{{ quantite<prix }}<="" li="">
4 | </prix></li><li>Fin de la liste</li>
| ^
5 |
at <App>
<li>true</li><li>true<="" li=""> </li><li>Fin de la liste</li>
Le premier « < », suivi d'une espace, reste du texte. Mais dans {{ quantite<prix }}, le navigateur, qui lit la page avant Vue, voit l'ouverture d'une balise <prix> : il l'insère dans l'arbre, et Vue reçoit un gabarit déjà déformé. Deux corrections : écrire la comparaison dans l'autre sens ({{ prix > quantite }}), ou la déplacer dans une fonction de setup, qui n'est pas lue par l'analyseur HTML :
<ol id="app">
<li>{{ prix < 50 }}</li>
<li>{{ prix > quantite }}</li>
<li>{{ moinsCher(quantite, prix) }}</li>
<li>Fin de la liste</li>
</ol>
"true"
"true"
"true"
"Fin de la liste"
Le problème disparaît avec les composants monofichiers (chapitre 6), dont le gabarit n'est jamais lu par l'analyseur HTML du navigateur.
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.