Maison  >  Questions et réponses  >  le corps du texte

Vuejs @input="function" ne fonctionne pas mais @input="() => do some" fonctionne

Je ne comprends pas pourquoi lorsque je passe une fonction anonyme au champ @input de mon composant d'entrée HTML, cela fonctionne, mais lorsque j'appelle la vraie fonction avec exactement le même code à l'intérieur, cela ne fonctionne pas. Voici le code quand ça ne marche pas :

<script setup>
import { ref } from 'vue'

const text = ref('')
const numberChar = ref(0)
const numberWords = ref(0)

function count() {
    numberChar = text.length
    numberWords = text.split(' ').filter((e) => e != '').length
}

</script>

<template>

<div class="box">
<input v-model="text" placeholder="Write here" @input="count"/>
 <p>
     Text : {{text}} <br>
     Characters : {{numberChar}} <br>
     Words : {{numberWords}}
 </p>
</div>

</template>

Mais quand je dis simplement :

<input v-model="text" placeholder="Write here" @input="() => numberChar = text.length"/>
La valeur

numberChar a été modifiée et affichée correctement. Je démarre Vuejs donc il me manque quelque chose, mais j'ai du mal avec ça depuis une heure...

P粉659518294P粉659518294213 Il y a quelques jours288

répondre à tous(1)je répondrai

  • P粉459440991

    P粉4594409912024-03-20 16:09:23

    Merci à tous, j'ai résolu ce problème. Le problème c'est ce que j'ai écrit dans la fonction

    numberChar = text.length

    au lieu de

    numberChar.value = text.value.length

    Etrangement, dans ma fonction anonyme, ce n'est pas obligatoire sans le .value 的情况下工作,我不知道为什么。在此处的教程中: https://vuejs.org/tutorial/#step-4他们正在以我尝试使用它的方式使用它。他们也在教程中说 .value car c'est implicite si rien n'est précisé ?

    Pour ceux qui ont dit que les tags et les titres de mes questions étaient incorrects, j'essaierai de faire mieux la prochaine fois, merci. (C'est mon premier article sur stackoverflow)

    Merci :)

    répondre
    0
  • Annulerrépondre