web-dev-qa-db-fra.com

Vuejs - En entrée, lancez une fonction (mais avec un retard)

J'ai un champ de saisie et v-on:input il exécute une méthode appelée activate qui ressemble à ceci:

export default: {
    data() {
        return {
            isHidden: true
        }
    },
    methods: {
        activate() {
            this.isHidden = false;
        }
    }
}

isHidden active/désactive une icône (peu importe la nature de cette propriété de données; je ne l'utilise qu'à des fins d'exemple).

Donc actuellement, lorsqu'un utilisateur fait un input, il active immédiatement la fonction activate. Existe-t-il un moyen de le retarder via setTimeout? J'ai essayé de faire ce qui suit mais cela ne fonctionne pas:

methods: {
    setTimeout(function() {
        activate() {
            this.isHidden = false;
        }
    }, 500)
}
11
MonkeyOnARock

Essaye ça:

methods: {
  activate() {
    setTimeout(() => this.isHidden = false, 500);
  }
}
21
Joe Attardi

Ou sans fonction flèche:

methods: {
    activate() {
        var that = this;
        setTimeout(function() { that.isHidden = false; }, 500);
    }
}
2
leshkin