2 回答

TA貢獻1874條經驗 獲得超12個贊
您的主要問題this在 setTimeout 回調內部
因為你使用的function() {}不是你想要this的
要么使用箭頭表示法setTimeout(() => {}, 2000)
updateProduct(product) {
this.isHidden = true;
setTimeout(() => {
//do a bunch of tasks that work correctly...
axios.post('/api/product/' + product.id, data)
.then(function(response) {
console.log(response);
}).catch(function(error) {
console.log(error);
});
this.isHidden = false;
}, 2000);
}
或者,如果箭頭符號讓您害怕setTimeout(function() {}.bind(this), 2000)
updateProduct(product) {
this.isHidden = true;
setTimeout(function() {
//do a bunch of tasks that work correctly...
axios.post('/api/product/' + product.id, data)
.then(function(response) {
console.log(response);
}).catch(function(error) {
console.log(error);
});
this.isHidden = false;
}.bind(this), 2000);
}
順便說一句,不要用于alert調試 - 它會阻止 javascript 的執行,并可能導致不可靠的調試結果

TA貢獻1772條經驗 獲得超8個贊
只需使用 V-else
<div v-if="!this.isHidden"> <!--or v-else -->
<form @submit.prevent="">
<!--Fields-->
<button @click="updateProduct(product)" type="button">Submit</button>
</form>
</div>
<div v-else>
<div v-if="this.isHidden">
LOADING....
</div>
</div>
添加回答
舉報