как я могу использовать функцию settimeout () в методе vuejs?
Я уже пробовал что-то вроде этого, но он не работает
fetchHole: function () { //get data }, addHole: function () { //my query add new setTimeout(function () { this.fetchHole() }, 1000) },
Я получаю это сообщение об ошибке Uncaught TypeError: this.fetchHole is not a function
Попробуйте это: setTimeout(this.fetchHole, 1000)
потому что this
в анонимной функции прикрепляется к этой анонимной функции не к вашей основной функции
Добавьте вызов bind()
в объявление функции:
setTimeout(function () { this.fetchHole() }.bind(this), 1000)
так что ваш компонент Vue доступен в этой функции.
Сторона примечания: принятый ответ @ nospor более чист в этой конкретной ситуации. Подход bind
немного более обобщен – очень полезно, если вы хотите сделать анонимную функцию, например.
Классическая проблема с контекстуальным в JavaScript.
Следующая часть кода показывает простое решение – если вы используете ES6 с Vuejs (конфигурация по умолчанию с vuecli y babel). Используйте функцию стрелки
setTimeout(()=>{ this.yourMethod() },1000);
Я думаю, это тоже работает.
var self = this; setTimeout(function () { self.fetchHole() } , 1000)