Я думаю, что проблема, с которой вы сталкиваетесь, заключается в том, что контекст this
в ваших тайм-аутах - это анонимная функция, а не родительский объект.Вы можете использовать либо функции стрелок, либо явную привязку.
new Vue({
el: '#app',
data: {
customEffect: ''
},
methods: {
start: function() {
setTimeout((function() { //BIND
this.customEffect = 'blueborder';
}).bind(this), 1000);
setTimeout(() => { //OR =>
this.customEffect = 'redtext';
}, 2000);
}
}
});
.blueborder {
border: 3px solid blue;
}
.redtext {
color: red;
}
<script src="https://npmcdn.com/vue/dist/vue.js"></script>
<div id="app">
<div>
<button @click="start">Start</button>
<div :class="customEffect">Some text</div>
</div>
</div>
РЕДАКТИРОВАТЬ Рекомендуемые учебные ресурсы
this
могут быть довольно сложными в JS.Если вы хотите узнать больше об этом, я настоятельно рекомендую соответствующую книгу You Not Know JS от Getify Прототипы This & Object