Comment puis-je utiliser la fonction settimeout () dans une méthode vuejs?
J'ai déjà essayé quelque chose comme ça, mais cela ne fonctionne pas
fetchHole: function () { //get data }, addHole: function () { //my query add new setTimeout(function () { this.fetchHole() }, 1000) },
Je reçois ce message d'erreur: Uncaught TypeError: this.fetchHole is not a function
Essayez ceci: setTimeout(this.fetchHole, 1000)
car this
dans la fonction anonyme est attaché à cette fonction anonyme non à votre fonction principale
Ajouter un appel bind()
à votre déclaration de fonction:
setTimeout(function () { this.fetchHole() }.bind(this), 1000)
De sorte que votre composant Vue est accessible dans la fonction.
Note latérale: @ la réponse acceptée de nospor est plus propre dans cette situation particulière. L'approche de bind
est un peu plus généralisée – très utile si vous voulez faire une fonction anonyme, par exemple.
Je pense que cela fonctionne aussi.
var self = this; setTimeout(function () { self.fetchHole() } , 1000)
Le problème classique avec contextuel en JavaScript.
La partie suivante du code montre une solution simple – si vous utilisez ES6 avec Vuejs (configuration par défaut avec vuecli y babel). Utilisez une fonction de flèche
setTimeout(()=>{ this.yourMethod() },1000);