【发布时间】:2016-11-18 20:06:03
【问题描述】:
我正在使用 Laravel 和 Vue 制作购物车系统。当我将一个项目添加到购物篮时,我通过切换一个 v-if 正在监视的 Vue 变量来显示一条确认消息:
<div class="alert alert-success" v-if="basketAddSuccess" transition="expand">Added to the basket</div>
还有 JS:
addToBasket: function(){
item = this.product;
this.$http.post('/api/buy/addToBasket', item);
this.basketAddSuccess = true;
}
(是的,我很快会在 then-catch 中添加这个)。
这工作正常并出现消息。但是,我希望消息在一段时间后再次消失,比如几秒钟。我怎样才能用 Vue 做到这一点?我试过 setTimeOut 但 Vue 似乎不喜欢它,说它是未定义的。
编辑:我像个白痴一样拼错了setTimeout。但是还是不行:
我现在的功能是:
addToBasket: function(){
item = this.photo;
this.$http.post('/api/buy/addToBasket', item);
this.basketAddSuccess = true;
setTimeout(function(){
this.basketAddSuccess = false;
}, 2000);
}
【问题讨论】:
-
试试
setTimeout(()=>{ this.basketAddSuccess = false; }, 2000); -
很可能,
setTimeout中的this并不指向主对象。 -
@akinuri 使用 ES6 和箭头函数
this应该指的是正确的范围。这是典型的var self=this解决之前的问题。如果我错了,请纠正我。未测试。
标签: javascript vue.js