Ich mache ein Einkaufswagen-System mit Laravel und Vue. Wenn ich einen Artikel in den Warenkorb legen, zeige ich eine Bestätigungsmeldung durch eine Vue Variable Makeln durch ein Beobachtete v-if:Vue entspricht setTimeOut?
<div class="alert alert-success" v-if="basketAddSuccess" transition="expand">Added to the basket</div>
und die JS:
addToBasket: function(){
item = this.product;
this.$http.post('/api/buy/addToBasket', item);
this.basketAddSuccess = true;
}
(Und ja, ich wird dies in einem then-catch in Kürze hinzufügen).
Dies funktioniert einwandfrei und die Nachricht erscheint. Ich möchte jedoch, dass die Nachricht nach einer bestimmten Zeit wieder verschwindet, sagen wir ein paar Sekunden. Wie kann ich das mit Vue machen? Ich habe versucht setTimeOut
, aber Vue scheint es nicht zu mögen und sagt, es ist undefiniert.
EDIT: Ich war falsch geschrieben setTimeout
wie ein Idiot. Allerdings funktioniert es immer noch nicht:
Meine Funktion ist jetzt:
addToBasket: function(){
item = this.photo;
this.$http.post('/api/buy/addToBasket', item);
this.basketAddSuccess = true;
setTimeout(function(){
this.basketAddSuccess = false;
}, 2000);
}
try 'SetTimeout montiert (() => { this.basketAddSuccess = false; }, 2000); ' –
Wahrscheinlich bezieht sich' this' in 'setTimeout' nicht auf das Hauptobjekt. – akinuri
@alexanderfarkas das funktioniert, danke! – flurpleplurple