Disclaimer: Je sais qu'il y a des données en attente dans Vue.js.
Donc j'ai ceci:
<html>
<body>
<div id="app">
<input @input="update">
</div>
<script src="https://unpkg.com/[email protected]/dist/vue.js"></script>
<script type="text/javascript">
new Vue({
el: '#app',
data: {
info: '',
},
methods: {
update: function (event) {
value = event.target.value;
this.info = value;
console.log(value);
}
}
});
</script>
</body>
</html>
Une entrée qui déclenchera une méthode appelée update
chaque fois que l'utilisateur saisira quelque chose. L'idée ici est de changer la valeur de la propriété data appelée info
avec la valeur saisie dans l'entrée par l'utilisateur.
Mais, pour une raison quelconque, la valeur de l'attribut de données ne change pas. La valeur d'entrée actuelle est imprimée normalement dans la console avec l'appel console.log(value)
chaque fois que la méthode update
est déclenchée, mais rien ne change pour l'attribut info
.
Alors, comment faire ce travail?
Le problème ici est que j'ai mélangé deux contextes différents.
Dans un autre script, je faisais la même chose, mais l'entrée était liée à un autre script js qui lui appliquait un masque. Cela a donc causé le problème de la non-modification de la valeur info
.
Ensuite, j’ai essayé de reproduire le problème de ce script dans la question (sans le script de masque js), puis j’ai pensé que rien ne changeait dans l’attribut info
car l’extension chrome de Vue.js m’avait montré que la valeur n’avait pas changé. changé , restait toujours vide, peu importe le nombre de réponses saisies (donc peut-être un problème environnemental).
En fin de compte, ce n’était qu’un problème de ma part et le véritable problème est de relier deux bibliothèques différentes en une seule entrée. Finalement, l’un d’eux ne fonctionnera pas et c’est le contenu d’une autre question.
Je ne vois pas quel est votre problème; votre exemple fonctionne parfaitement:
new Vue({
el: '#app',
data: {
info: '',
},
methods: {
update: function(event) {
value = event.target.value;
this.info = value;
console.log(value)
}
}
});
<script src="https://unpkg.com/[email protected]/dist/vue.js"></script>
<div id="app">
<input @input="update">
{{ info }}
</div>
Vous pouvez toujours créer une liaison de données bidirectionnelle à l'aide de v-model
, liant ainsi essentiellement la valeur du champ d'entrée à la propriété info
. De cette façon, la valeur de info
est mise à jour lorsque l'utilisateur entre quelque chose dans le champ de saisie.
Exemple ci-dessous: -
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue.js stuff</title>
</head>
<body>
<div id="app">
<div>You typed {{info}}</div>
<br>
<input type="text" v-model="info">
</div>
</body>
<script src="https://unpkg.com/[email protected]/dist/vue.js"></script>
<script>
var app = new Vue({
el: "#app",
data: {
info: ""
}
});
</script>
</html>