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>
添加回答
举报