Область действия this
привязана к Window вместо вашего экземпляра Vue.
mounted: function() {
console.log(this); // Vue
setInternval(function() {
console.log(this); // Window
}, 1000);
setInterval(() => {
console.log(this); // Vue
}, 1000);
}
У вас была правильная идея с вашими аксиос обещаниями, .then(response => { .. })
при использовании функции стрелки для сохранения области действия this
, но вы не применили ее к setInterval
.
Если по какой-то причине вам действительно нравится внешний вид setInterval(function() { .. })
или вам необходимо this
в качестве объекта Window, вы можете создать переменную и присвоить ей this
вне функции setInterval
.
mounted: function() {
const vThis = this; // Vue
setInterval(function() {
axios({..})
.then(response => {
vThis.todos = response.data;
console.log(this); // Window
console.log(vThis); // Vue
})
.catch(error => {
});
}, 5000);
}