Pourquoi Vue.js @input n'est-il pas tiré lorsque vous cliquez sur le bouton?
Lorsque je change code> de la valeur code> directement (cliquez sur l'élément d'entrée et tapez une nouvelle valeur) p>
alerte code> est tiré. p> <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<input type="text" v-model.number="count" @input="alert">
<button @click="add">+1</button>
</div>
3 Réponses :
Vous pouvez appeler p> alerte code> à partir de l'intérieur Ajouter code> Méthode: add: function() {
this.count += 1;
// invoke alert()
this.alert();
}
Oui, mais pourquoi n'est-il pas licencié par l'événement de saisie? L'événement d'entrée déclenche lorsque la valeur d'une
Oui, l'événement sera tiré si vous modifiez la valeur en tapant dans le champ de saisie, car le navigateur déclenche l'événement réellement. Ici, la valeur change par VUE.JS ou JS.
@ Miloslav21 Vous n'êtes pas VRAIMENT i> Changement de la valeur d'entrée, vous modifiez une valeur de données liée à l'entrée. @input code> est spécifiquement destiné à un utilisateur modifiant directement le champ, non pour toute modification apportée sur le champ à la suite de quelque chose comme Data Code>.
@Jameswhiteley tu as raison. La propriété de la valeur n'est pas vraiment modifiée.
Je suis sûr que son @Change pas @input:
Alternativement: P> watch : {
number: function (newVal) {
alert();
}
}
p> @Input code> ne modifie aucune modification d'une étiquette code> d'entrée code>; Il est spécifiquement déclenché lorsqu'un utilisateur modifie directement la balise code> entrée code>. Vous voulez quelque chose comme watch code>: <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<input type="text" v-model.number="count" />
<button @click="add">+1</button>
</div>
Votre alerte est sur la balise d'entrée, pas la balise du bouton. Pourquoi vous attendriez-vous à cliquer sur le bouton pour déclencher une alerte?
Parce que la valeur de changement elle-même devrait déclencher un événement.
Changer
@Input code> à@ CHANGE = "ALERTE ('TEST')" CODE>@ Miloslav21
@Input code> déclenchera lorsque l'utilisateur saisit quelque chose, pas lorsque la valeur dans cette case change. Vous voudrez utiliser quelque chose commeWatch code> si vous souhaitez regarder pour le compte pour changer.Sur une note non liée, vous trouverez un bogue dans votre code où si vous supprimez ce qui est dans la zone de texte et appuyez à nouveau sur la touche "+1", il commence juste à ajouter "1" de l'augmentation du compte. Cela se produit également si vous mettez une lettre au début de ce qui est dans la boîte de saisie. Je pense que le JavaScript ne fait que traiter la valeur comme une chaîne lorsque cela se produit; Vous voudrez probablement gérer cela.
@Jameswhiteley tu as raison. Merci d'avertissement.