Académique Documents
Professionnel Documents
Culture Documents
Dans cet atelier, on va traiter les directives. En Vue.js, une directive est un attribut que l’on place au
niveau d’une balise HTML.
Le but des directives en Vue.js est de rapidement effectuer des opérations sur le DOM lorsqu’une
expression change dans votre code.
Les directives Vue.js sont des attributs html qui peuvent être inséré dans votre page afin de modifier
le rendu de votre application Vue.
v-bind
Permet d'assigner une expression à un attribut. Vue va remplacer l'expression par sa valeur.
// ou syntaxe raccourci
<img :src="image_url" />
Affiche ou non l’élément HTML sur lequel il est situé. Exemple, rendre un élément visible ou non visible
selon la valeur vrai ou faux de l'expression. Lorsque non visible l'élément n'est pas rendu dans le html.
v-for
<ul>
<li v-for="item in items" :key="item.id">
{{ item.name }}
</li>
</ul>
À noter le mot clé "key" est nécessaire pour permettre à Vue d'identifier uniquement l'élément
Ref
Permet à votre application Vue d'identifier un élément html et d'effectuer des actions sur cet élément.
Manipulation à partir de votre code Vue en utilisant le mot clé spécial : $refs
methods: {
handleClick() {
console.log(this.$refs.name)
this.$refs.name.classList.add('active')
this.$refs.name.focus()
}
}
v-model
Permet de lier la valeur d'un champ de saisie avec une variable. Si vous modifiez l'un ou l'autre Vue
mettra à jour automatiquement l'autre. Du coup, la variable et le champ de saisie auront toujours la
même valeur.
style
Remarque :
Cet élément permet d'utiliser des directives de Vue sans créer un élément html.
2. Les événements
Vue permet de gérer les événements javascript comme click, input, change, etc. Pour ce faire vous
devez utiliser la directive v-on: suivie du nom de l'évènement.
v-on:click
// ou syntaxe raccourci
<button @click="name = 'Mike'">Afficher message</button>
v-on:submit
3. Les méthodes
Vue js permet de créer des méthodes afin d'y placer un block de code réutilisable dans votre
application. Voici la syntaxe pour créer une méthode :
Vue.createApp({
data() {
return {
name: "Mike Taylor",
}
},
methods: {
resetName() {
this.name = ''
}
}
}).mount('#app')
À noter le mot clé 'this' placé en avant de la variable name. Ce mot clé est obligatoire pour permettre
de référencer une variable à l'intérieure de notre instance de Vue.
Pour appeler une méthode vous pouvez le faire simplement en utilisant son nom.
methods: {
resetName(newName) {
this.name = newName
}
}
<input v-model="name" type="text" />
<button @click="resetName('John')" type="text">Effacer</button>
methods: {
resetName(newName, e) {
this.name = newName
console.log(e.target.textContent)
}
}
<input v-model="name" type="text" />
<button @click="resetName('John', $event)" type="text">Effacer</button>
Pour installer le projet Vue, si ce n’est pas déjà fait au préalable, nous devons avoir Vue CLI installé sur
notre système de développement. Exécutez la commande suivante pour installer Vue CLI :
npm install -g @vue/cli
Dans l’invite de commande, exécutez la commande pour démarrer l'application sur le navigateur :
npm run serve
Une fois le serveur hébergé et l'application démarrée, vous pouvez accéder à http://localhost:8080/.
5. Dans le dossier « src/assets » du projet Vue, créer un répertoire intitulé « images ». Puis y
télécharger les différentes images de produits qu’on va afficher dans notre site.
6. Nous allons créer un composant nommé « Villes.vue » sous le dossier components. Il
contient les données suivantes :
- Un titre ayant comme valeur « Les principales villes de la Tunisie ».
- Un tableau d’objets nommé « tabVilles » contenant les valeurs suivantes :
<script>
export default {
name: 'Villes',
data(){
return{
titre:"Les principales villes de la Tunisie",
tabVilles:[
{id :1,nom : "Tunis",photo : "images/tunis.jpg"},
{id :1,nom : "Sousse",photo : "images/sousse.jpg"},
{id :1,nom : "Sfax",photo : "images/sfax.jpg"},
{id :1,nom : "Gabes",photo : "images/gabes.jpg"},
]
}
}
}
</script>
<h1>{{titre}}</h1>
c. Utilisez la directive v-for pour afficher le tableau et v-bind pour afficher l’image (ou sa version
raccourcie).
<ul>
<li v-for="item in tabVilles" :key="item.id">
{{ item.nom }}
<img :src="require(`../assets/images/${item.photo}`)" alr=""
width="60" />
</li>
</ul>
d. Utilisez la directive v-if pour faire le test si le nom de ville est tunis afficher le message qu’il
s’agit de la capitale.
<span v-if="item.nom == 'Tunis' ">
La capitale de la Tunisie
</span>
<template>
<div>
<h1>{{ titre }}</h1>
<ul :style="{ 'font-size': '20px' }">
<li v-for="item in tabVilles" :key="item.id">
{{ item.nom }}
<img :src="require(`../assets/images/${item.photo}`)" alr=""
width="60" />
<span v-if="item.nom == 'Tunis' ">
La capitale de la Tunisie
</span>
</li>
</ul>
</div>
</template>
<script>
export default {
name: 'Villes',
data(){
return{
titre:"Les principales villes de la Tunisie",
tabVilles:[
{id :1,nom : "Tunis",photo : "tunis.jpg"},
{id :1,nom : "Sousse",photo : "sousse.jpg"},
{id :1,nom : "Sfax",photo : "sfax.jpg"},
{id :1,nom : "Gabes",photo : "gabes.jpg"},
],
}
}
}
</script>
<template>
<div>
<Villes />
</div>
</template>
<script>
import Villes from "./components/Villes.vue"
export default {
name: 'app',
components: {
Villes
}
}
</script>
components/Monuments.vue
<template>
<div>
<div>
<input type="text" v-model="nomMonument"/>
<button @click.prevent="Ajout()">Ajouter</button>
</div>
<div v-if="nomMonument.length > 0">
Monument ajouté : {{ nomMonument }}
</div>
<div v-if="tabMonuments">
<div v-for="item in tabMonuments" :key="item">
{{item}}
</div>
</div>
</div>
</template>
<script>
export default {
name: 'Monuments',
data(){
return{
nomMonument:"",
tabMonuments:[],
}
},
methods:{
Ajout(){
this.tabMonuments.push(this.nomMonument)
}
}
}
</script>
App.vue
<template>
<div>
<Villes />
<Monuments/>
</div>
</template>
<script>
import Villes from "./components/Villes.vue"
import Monuments from "./components/Monuments.vue"
export default {
name: 'app',
components: {
Villes,
Monuments
}
}
</script>
Le résultat dans le navigateur :