---
title: Directives d'éléments
---
En plus des attributs, les éléments peuvent avoir des _directives_, qui contrôlent le comportement des éléments de différentes manières.
## on:_eventname_
```svelte
on:eventname={handler}
```
```svelte
on:eventname|modifiers={handler}
```
Utilisez la directive `on:` pour écouter des évènements du [DOM](/docs/web#dom).
```svelte
```
Les gestionnaires d'évènement peuvent être déclarés directement sans pénaliser les performances. Comme pour les attributs, les valeurs utilisées pour les directives peuvent être mises entre guillemets afin d'aider la coloration syntaxique.
```svelte
```
Ajoutez des *modificateurs* aux évènements [DOM](/docs/web#dom) avec le caractère `|`.
```svelte
```
Les modificateurs suivants sont disponibles:
* `preventDefault` — appelle `event.preventDefault()` avant d'exécuter le gestionnaire d'évènement
* `stopPropagation` — appelle `event.stopPropagation()`, empêchant l'évènement d'atteindre le prochain élément
* `stopImmediatePropagation` - appelle `event.stopImmediatePropagation()`, empêchant d'autres gestionnaires du même évènement d'être exécutés
* `passive` — améliore la performance du défilement pour les évènements `touch`/`wheel` (Svelte l'ajoutera automatiquement lorsque qu'il détecte que ce n'est pas problématique)
* `nonpassive` — déclare explicitement l'évènement avec `passive: false`
* `capture` — déclenche le gestionnaire d'évènement pendant la phase de _capture_ plutôt que pendant la phase de _bubbling_
* `once` — supprime le gestionnaire d'évènement après sa première exécution
* `self` — ne déclenche le gestionnaire d'évènement que si `event.target` est l'élément lui-même
* `trusted` — ne déclenche le gestionnaire d'évènement que si `event.isTrusted` est `true`. C'est-à-dire si l'évènement est déclenché par une action utilisateur.
Vous pouvez chaîner les modificateurs, par ex. `on:click|once|capture={...}`.
Si la directive `on:` est utilisée sans valeur, le composant relaiera l'évènement à son parent, ce qui permettra à ce dernier de l'écouter.
```svelte
```
Il est possible d'avoir plusieurs gestionnaires pour le même évènement:
```svelte
```
## bind:_property_
```svelte
bind:property={variable}
```
En général, la donnée _descend_ du parent vers l'enfant. La directive `bind:` permet à la donnée de remonter de l'enfant vers le parent. Le plus souvent ces liaisons sont spécifiques à des éléments particuliers.
L'exemple le plus simple d'une liaison reflète la valeur d'une propriété, comme `input.value`.
```svelte
```
Si le nom de la variable est le même que le nom de la propriété, vous pouvez simplifier l'écriture.
```svelte
```
Les valeurs numériques sont traitées comme des nombres ; même si `input.value` est une chaîne de caractères pour le [DOM](/docs/web#dom), Svelte traitera cette valeur comme un nombre. Si l'`` est vide ou invalide (dans le cas de `type="number"` par exemple), la valeur sera `undefined`.
```svelte
```
Sur les éléments `` de type `type="file"`, vous pouvez utiliser `bind:files` pour obtenir la [`FileList` des fichiers sélectionnés](https://developer.mozilla.org/fr/docs/Web/API/FileList). Cette liste est en lecture seule.
```svelte
```
Si vous utilisez des directives `bind:` conjointement à des directives `on:`, l'ordre dans lequel elles sont définies affectera la valeur de la variable liée lorsque la fonction d'écoute sera appelée.
```svelte
console.log('Ancienne valeur:', value)}
bind:value
on:input={() => console.log('Nouvelle valeur:', value)}
/>
```
Dans ce cas, nous avons lié la valeur d'un `` de texte qui utilise l'évènement `input`. Des liaisons sur d'autres éléments pourraient utiliser d'autres évènements comme `change`.
### Lier les valeurs de `