Dans VueJS, nous pouvons ajouter ou supprimer un élément DOM en utilisant v-if :
<button v-if="isRequired">Important Button</button>
mais existe-t-il un moyen d'ajouter/supprimer les attributs d'un élément dom, par exemple, pour l'élément suivant, définir conditionnellement l'attribut requis :
Username: <input type="text" name="username" required>
par quelque chose de similaire :
Username: <input type="text" name="username" v-if="name.required" required>
Des idées ?
8 votes
Bien que ce ne soit pas si évident (d'où la confusion), la documentation dit en fait que si la valeur de l'attribut est évaluée à false, l'attribut est alors omis ( vuejs.org/v2/guide/syntaxe.html#Attributs )
0 votes
En fait, la documentation indique que l'attribut ne sera pas ajouté si " a la valeur de
null
,undefined
oufalse
" ce qui est différent d'un script JS évaluant à false. Cela signifie qu'une chaîne vide est fausse en JavaScript, mais qu'elle ajouterait quand même l'attribut au DOM. Pour éviter cela, vous pouvez essayerv-bind:name="name || false"
0 votes
Si c'est vrai, comment puis-je passer explicitement
false
au composant enfant via une prop ?0 votes
@BruceSun , Si l'attribut dans le contexte disparaît "involontairement" lorsque vous lui donnez une fausse valeur, essayez de le passer comme une chaîne de caractères.
'false'
. Dans d'autres cas, lorsque vous devez contrôler la présence d'un attribut html non booléen sur l'élément, vous pouvez utiliser le rendu conditionnel avec la fonctionv-if
comme suggéré ici : github.com/vuejs/vue/issues/7552#issuecomment-3613952340 votes
AlexanderB Je pense que je dois me corriger. Je devrais dire
attribute
mais PASprop
. Nous pouvons sans risque passer explicitementfalse
via une propriété du composant mais PAS l'attribut (qui n'est pas reconnu comme une propriété). Ai-je raison ?