Skip to content

Commit 0f7067d

Browse files
Merge pull request #68 from Haeresis/custom-directive
Traduction de `custom-directive.md`
2 parents 45413e5 + 04ac43e commit 0f7067d

File tree

1 file changed

+40
-40
lines changed

1 file changed

+40
-40
lines changed

src/v2/guide/custom-directive.md

+40-40
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
---
2-
title: Custom Directives (En)
2+
title: Directives personnalisées
33
type: guide
44
order: 16
55
---
66

7-
## Intro
7+
## Introduction
88

9-
<p class="tip">**Cette page est en cours de traduction française. Revenez une autre fois pour lire une traduction achevée ou [participez à la traduction française ici](https://github.com/vuejs-fr/vuejs.org).**</p><p>In addition to the default set of directives shipped in core (`v-model` and `v-show`), Vue also allows you to register your own custom directives. Note that in Vue 2.0, the primary form of code reuse and abstraction is components - however there may be cases where you just need some low-level DOM access on plain elements, and this is where custom directives would still be useful. An example would be focusing on an input element, like this one:</p>
9+
En supplément de l'ensemble de directives fournies par défaut (`v-model` et `v-show`), Vue vous permet également d'enregistrer vos propres directives. Notez qu'avec Vue 2, les composants sont la forme principale de réutilisabilité et d'asbtraction du code. Il y a cependant des cas où vous aurez juste besoin d'un accès de bas niveau aux éléments du DOM, et c'est là que les directives personnalisées vous seraient utiles. Un exemple pourrait être la prise du focus sur un élément de champ, comme celui-ci :
1010

1111
{% raw %}
1212
<div id="simplest-directive-example" class="demo">
@@ -24,69 +24,69 @@ new Vue({
2424
</script>
2525
{% endraw %}
2626

27-
When the page loads, that element gains focus (note: autofocus doesn't work on mobile Safari). In fact, if you haven't clicked on anything else since visiting this page, the input above should be focused now. Now let's build the directive that accomplishes this:
27+
Quand la page se charge, cet élément prend le focus (notez que l'autofocus ne fonctionne pas sur Safari mobile). En fait, si vous n'avez cliqué sur rien du tout depuis votre arrivée sur la page, le champ ci-dessous devrait avoir le focus. À présent, jetons un œil à la directive qui pourrait accomplir cela :
2828

2929
``` js
30-
// Register a global custom directive called v-focus
30+
// Enregistrer une directive globale appelée focus
3131
Vue.directive('focus', {
32-
// When the bound element is inserted into the DOM...
32+
// Quand l'élément lié est inséré dans le DOM...
3333
inserted: function (el) {
34-
// Focus the element
34+
// L'élément prend le focus
3535
el.focus()
3636
}
3737
})
3838
```
3939

40-
If you want to register a directive locally instead, components also accept a `directives` option:
40+
Si vous préférez enregistrer à la place la directive en local, les composants acceptent également l'option `directives` :
4141

4242
``` js
4343
directives: {
4444
focus: {
45-
// directive definition
45+
// définition de la directive
4646
}
4747
}
4848
```
4949

50-
Then in a template, you can use the new `v-focus` attribute on any element, like this:
50+
Puis dans un template, vous pouvez utiliser le nouvel attribut `v-focus` sur n'importe quel élément, comme celui-ci :
5151

5252
``` html
5353
<input v-focus>
5454
```
5555

56-
## Hook Functions
56+
## Fonctions de hook
5757

58-
A directive definition object can provide several hook functions (all optional):
58+
Un objet de définition de directive peut fournir plusieurs fonctions de hook (toutes optionnelles) :
5959

60-
- `bind`: called only once, when the directive is first bound to the element. This is where you can do one-time setup work.
60+
- `bind` : appelée une seule fois quand la directive est attachée à l'élément. C'est ici que vous pouvez effectuer les actions uniques d'initialisation.
6161

62-
- `inserted`: called when the bound element has been inserted into its parent node (this only guarantees parent node presence, not necessarily in-document).
62+
- `inserted`: appelée quand l'élément lié a été inséré dans son nœud parent (cela garantit uniquement sa présence dans le nœud parent, mais pas nécessairement dans le document principal).
6363

64-
- `update`: called after the containing component has updated, __but possibly before its children have updated__. The directive's value may or may not have changed, but you can skip unnecessary updates by comparing the binding's current and old values (see below on hook arguments).
64+
- `update`: appelée après que le composant conteneur ait été mis à jour, __mais possiblement avant que ses enfants aient été mis à jour__. La valeur de la directive peut ou pas avoir changé, mais vous pouvez ignorer les mises à jour inutiles en comparant les valeurs actuelles et anciennes de la liaison (voir plus bas les arguments de hook).
6565

66-
- `componentUpdated`: called after the containing component __and its children__ have updated.
66+
- `componentUpdated`: appelée après que le composant conteneur __et ses enfants__ aient été mis à jour.
6767

68-
- `unbind`: called only once, when the directive is unbound from the element.
68+
- `unbind`: appelée uniquement une fois, quand la directive est déliée de l'élément.
6969

70-
We'll explore the arguments passed into these hooks (i.e. `el`, `binding`, `vnode`, and `oldVnode`) in the next section.
70+
Nous allons explorer les arguments passés à ces hooks (c.-à-d. `el`, `binding`, `vnode`, et `oldVnode`) dans la prochaine section.
7171

72-
## Directive Hook Arguments
72+
## Arguments des hooks d'une directive
7373

74-
Directive hooks are passed these arguments:
74+
Les hooks d'une directive ont accès à ces arguments :
7575

76-
- **el**: The element the directive is bound to. This can be used to directly manipulate the DOM.
77-
- **binding**: An object containing the following properties.
78-
- **name**: The name of the directive, without the `v-` prefix.
79-
- **value**: The value passed to the directive. For example in `v-my-directive="1 + 1"`, the value would be `2`.
80-
- **oldValue**: The previous value, only available in `update` and `componentUpdated`. It is available whether or not the value has changed.
81-
- **expression**: The expression of the binding as a string. For example in `v-my-directive="1 + 1"`, the expression would be `"1 + 1"`.
82-
- **arg**: The argument passed to the directive, if any. For example in `v-my-directive:foo`, the arg would be `"foo"`.
83-
- **modifiers**: An object containing modifiers, if any. For example in `v-my-directive.foo.bar`, the modifiers object would be `{ foo: true, bar: true }`.
84-
- **vnode**: The virtual node produced by Vue's compiler. See the [VNode API](../api/#VNode-Interface) for full details.
85-
- **oldVnode**: The previous virtual node, only available in the `update` and `componentUpdated` hooks.
76+
- **el**: L'élément sur lequel la directive est liée. Cela peut être utilisé pour directement manipuler le DOM.
77+
- **binding**: Un objet contenant les propriétés suivantes.
78+
- **name**: Le nom de la directive, sans le préfixe `v-`.
79+
- **value**: La valeur passée à la directive. Par exemple dans `v-my-directive="1 + 1"`, la valeur serait `2`.
80+
- **oldValue**: La valeur précédente, seulement disponible dans `update` et `componentUpdated`. Elle est disponible, que la valeur ait changé ou non.
81+
- **expression**: L'expression liée en tant que chaîne de caractères. Par exemple dans `v-my-directive="1 + 1"`, l'expression serait `"1 + 1"`.
82+
- **arg**: L'argument passé à la directive, s'il y en a une. Par exemple dans `v-my-directive:foo`, l'argument serait `"foo"`.
83+
- **modifiers**: Un objet contenant les modificateurs, s'il y en a. Par exemple dans `v-my-directive.foo.bar`, l'objet des modificateurs serait `{ foo: true, bar: true }`.
84+
- **vnode**: Le nœud virtuel produit par le compilateur Vue. Voir l'[API VNode](../api/#Interface-VNode) pour tous les détails.
85+
- **oldVnode**: Le nœud virtuel précédent, seulement disponible dans les hooks `update` et `componentUpdated`.
8686

87-
<p class="tip">Apart from `el`, you should treat these arguments as read-only and never modify them. If you need to share information across hooks, it is recommended to do so through element's [dataset](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/dataset).</p>
87+
<p class="tip">À l'exception de `el`, vous devez traiter ces arguments comme étant en lecture seule (« read-only ») et ne jamais les modifier. Si vous souhaitez partager des informations entre les hooks, il est recommandé de le faire à travers les attributs de données sur mesure de ses éléments (voir [dataset](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/dataset)).</p>
8888

89-
An example of a custom directive using some of these properties:
89+
Un exemple de directive personnalisée utilisant plusieurs de ces propriétés :
9090

9191
``` html
9292
<div id="hook-arguments-example" v-demo:foo.a.b="message"></div>
@@ -109,7 +109,7 @@ Vue.directive('demo', {
109109
new Vue({
110110
el: '#hook-arguments-example',
111111
data: {
112-
message: 'hello!'
112+
message: 'bonjour !'
113113
}
114114
})
115115
```
@@ -132,33 +132,33 @@ Vue.directive('demo', {
132132
new Vue({
133133
el: '#hook-arguments-example',
134134
data: {
135-
message: 'hello!'
135+
message: 'bonjour !'
136136
}
137137
})
138138
</script>
139139
{% endraw %}
140140

141-
## Function Shorthand
141+
## Fonction abrégée
142142

143-
In many cases, you may want the same behavior on `bind` and `update`, but don't care about the other hooks. For example:
143+
Dans de nombreux cas, vous pourriez vouloir le même comportement pour les hooks `bind` et `update`, sans avoir besoin des autres hooks. Par exemple :
144144

145145
``` js
146146
Vue.directive('color-swatch', function (el, binding) {
147147
el.style.backgroundColor = binding.value
148148
})
149149
```
150150

151-
## Object Literals
151+
## Littéraux objet
152152

153-
If your directive needs multiple values, you can also pass in a JavaScript object literal. Remember, directives can take any valid JavaScript expression.
153+
Si votre directive a besoin de plusieurs valeurs, vous pouvez également passer un objet JavaScript. Souvenez-vous, une directive peut accepter n'importe quelle expression JavaScript.
154154

155155
``` html
156-
<div v-demo="{ color: 'white', text: 'hello!' }"></div>
156+
<div v-demo="{ color: 'white', text: 'bonjour !' }"></div>
157157
```
158158

159159
``` js
160160
Vue.directive('demo', function (el, binding) {
161161
console.log(binding.value.color) // => "white"
162-
console.log(binding.value.text) // => "hello!"
162+
console.log(binding.value.text) // => "bonjour !"
163163
})
164164
```

0 commit comments

Comments
 (0)