Différence entre @click et v-on: cliquez sur Vuejs


161

les questions doivent être suffisamment claires :). Mais je peux voir que quelqu'un utilise:

<button @click="function()">press</button>

Quelqu'un utilise:

<button v-on:click="function()">press</button>

Mais vraiment quelle est la différence entre les deux (si elle existe)

Réponses:


190

Il n'y a pas de différence entre les deux, l'un n'est qu'un raccourci pour le second.

Le préfixe v sert de repère visuel pour identifier les attributs spécifiques à Vue dans vos modèles. Ceci est utile lorsque vous utilisez Vue.js pour appliquer un comportement dynamique à un balisage existant, mais peut sembler verbeux pour certaines directives fréquemment utilisées. Dans le même temps, le besoin du préfixe v devient moins important lorsque vous construisez un SPA où Vue.js gère chaque modèle.

<!-- full syntax -->
<a v-on:click="doSomething"></a>
<!-- shorthand -->
<a @click="doSomething"></a>

Source: documentation officielle .


1
Y a-t-il une préférence de la communauté Vue envers @ ou est-ce juste la préférence de JetBrains de se plaindre de l'utilisation de v-on?
Kimmo Hintikka

5
@KimmoHintikka Oui, il y a en quelque sorte une préférence pour le raccourci (@). La règle est incluse dans strongly-recommendedet recommendeddes préréglages eslint-plugin-vue. github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/…
Cobaltway

64

v-bindet v-onsont deux directives fréquemment utilisées dans le modèle html vuejs. Ils ont donc fourni une notation abrégée pour les deux comme suit:

Vous pouvez remplacer v-on:par@

v-on:click='someFunction'

comme:

@click='someFunction'

Un autre exemple:

v-on:keyup='someKeyUpFunction'

comme:

@keyup='someKeyUpFunction'

De même, v-bindavec:

v-bind:href='var1'

Peut s'écrire:

:href='var1'

J'espère que ça aide!


@LorenzoBerti que diriez-vous de cette réponse. Cela vous a-t-il aidé à mieux comprendre?
Nitin Kumar

La réponse n'explique rien, donne juste des exemples dont 1/3 est incompatible avec la question posée. Désolé.
Jakub Strebeyko

v-bind et v-on sont deux directives fréquemment utilisées dans le modèle html vuejs. Ils ont donc fourni une notation abrégée pour les deux. Je pense que cela explique la question. c'est aussi la raison fournie dans la documentation de cue js :-)
Nitin Kumar

Le fait est que la réponse a été publiée 4 mois plus tard sans liens, sans citation et en ajoutant le raccourci deux-points pour v-bind, ce qui peut en fait ajouter à la confusion.
Jakub Strebeyko

2

Ils peuvent sembler un peu différents du HTML normal, mais: et @ sont des caractères valides pour les noms d'attributs et tous les navigateurs pris en charge par Vue.js peuvent l'analyser correctement. De plus, ils n'apparaissent pas dans le balisage rendu final. La syntaxe abrégée est totalement facultative, mais vous l'apprécierez probablement lorsque vous en saurez plus sur son utilisation plus tard.

Source: documentation officielle .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.