D"ordinaire, les données circulent vers le bas, du parent vers ses enfants. La directive `bind:` permet de faire circuler les données dans l'autre sens, de l'enfant vers le parent. La syntaxe générale est `bind:property={expression}`, où `expression` est une _lvalue_ (c-à-d une variable ou une propriété d'objet). Lorsque l'expression est un identifiant du même nom que la propriété, il est possible d'omettre l'expression — autrement dit ces deux écritures sont équivalentes : ```svelte ``` Svelte crée un gestionnaire d'évènement qui met à jour la valeur liée. Si un élément a déjà un gestionnaire pour le même évènement, ce gestionnaire sera déclenché avant que la valeur liée soit mise à jour. La plupart des liaisons sont à _double sens_ (_two-way_), ce qui signifie que toute modification de la valeur va impacter l'élément est vice-versa. Quelques liaisons sont en _lecture seule_ (_readonly_), ce qui signifie que les changements de valeur n'auront aucun effet sur l'élément. ## Liaisons de fonction [!VO]Function bindings Vous pouvez aussi utiliser `bind:property={get, set}`, où `get` et `set` sont des fonctions, vous permettant d'effectuer des validations et des transformations : ```svelte value, (v) => value = v.toLowerCase()} /> ``` Dans le cas de liaisons en lecture seule comme [dimension bindings](#Dimensions), la valeur `get` doit être `null` : ```svelte
...
``` > [!NOTE] > Les liaisons de fonctions sont disponible à partir de Svelte version 5.9.0. ## `` Une directive `bind:value` sur un élément `` crée une liaison avec la propriété `value` de l'input : ```svelte

{message}

``` Dans le cas d'un input numérique (`type="number"` ou `type="range"`), la valeur sera transformée en nombre ([démo](/playground/untitled#H4sIAAAAAAAAE6WPwYoCMQxAfyWEPeyiOOqx2w74Hds9pBql0IllmhGXYf5dKqwiyILsLXnwwsuI-5i4oPkaUX8yo7kCnKNQV7dNzoty4qSVBSr8jG-Poixa0KAt2z5mbb14TaxA4OCtKCm_rz4-f2m403WltrlrYhMFTtcLNkoeFGqZ8yhDF7j3CCHKzpwoDexGmqCL4jwuPUJHZ-dxVcfmyYGe5MAv-La5pbxYFf5Z9Zf_UJXb-sEMquFgJJhBmGyTW5yj8lnRaD_w9D1dAKSSj7zqAQAA)) : ```svelte

{a} + {b} = {a + b}

``` Si l'input est vide ou invalide (dans le cas de `type="number"`), la valeur sera `undefined`. Depuis la version 5.6.0, si un `` faisant partie d'un formulaire possède une valeur par défaut `defaultValue`, il récupèrera cette valeur par défaut plutôt que la chaîne de caractères vide lors de la réinitialisation du formulaire. Notez que pour le rendu initial, la valeur de la liaison est prioritaire sauf s'il cette valeur est `null` ou `undefined`. ```svelte
``` > [!NOTE] > Utilisez les boutons de réinitialisation avec prudence, et assurez-vous que les utilisateurs et > utilisatrices ne cliquent pas dessus accidentellement lorsqu'ils souhaitent soumettre le > formulaire. ## `` Les inputs de type checkbox et radio peuvent être liés avec `bind:checked` : ```svelte ``` Depuis la version 5.6.0, si un `` faisant partie d'un formulaire possède une valeur par défaut `defaultChecked`, il récupèrera cette valeur par défaut plutôt que `false` lors de la réinitialisation du formulaire. Notez que pour le rendu initial, la valeur de la liaison est prioritaire sauf s'il cette valeur est `null` ou `undefined`. ```svelte
``` ## `` Les checkbox peuvent être dans un état [indéterminé](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/indeterminate), indépendamment de si elles sont cochées ou non : ```svelte
{#if indeterminate} en attente... {:else if checked} coché {:else} non coché {/if}
``` ## `` Les inputs qui fonctionnent en groupe peuvent utiliser `bind:group`. ```svelte ``` > [!NOTE] `bind:group` ne fonctionne que si les inputs sont dans le même composant Svelte. ## `` Vous pouvez utiliser `bind:files` sur les éléments `` de `type="file"` pour obtenir une [`FileList` des fichiers sélectionnés](https://developer.mozilla.org/fr/docs/Web/API/FileList). Lorsque vous souhaitez mettre à jour les fichiers programmatiquement, vous pouvez toujours utiliser un objet `FileList`. Actuellement les objets `FileList` ne peuvent pas être construits directement, vous aurez besoin de d'abord créer un nouvel objet [`DataTransfer`](https://developer.mozilla.org/fr/docs/Web/API/DataTransfer) et en extraire les `files`. ```svelte ``` Les objets `FileList` ne peuvent pas non plus être modifiés. Si vous souhaitez par ex. supprimer un fichier de la liste, vous devez créer un nouvel objet `DataTransfer` et y ajouter uniquement les fichiers que vous souhaitez garder. > [!NOTE] `DataTransfer` peut ne pas être disponible dans certains runtimes JS de serveur. Ne pas > initialiser l'état lié aux `files` permet d'éviter de potentielles erreurs si les composants sont > générés côté serveur. ## `` correspond à la propriété `value` de l'` ``` Lorsque la valeur d'une ` ``` ## `