【发布时间】:2020-05-23 15:57:22
【问题描述】:
我是 VueJs 的新手,我遇到了一个问题。我正在创建一个表单,并希望显示一个带有消息“您可能会丢失数据,请在离开前保存数据”的警报对话框。当我点击是时,它应该提交表单并更改路线。
我知道我们可以使用beforeRouteLeave(to, from, next) 来做到这一点,但是我如何在路线离开之前在警报框中单击“是”提交表单?
handleArticleSubmit() {
// Collect form data
let formData = new FormData();
// Start Button Loading
this.isSubmittingArticle = true;
axios
.post("/articles", formData, {
headers: {
"Content-Type": "multipart/form-data"
}
})
.then(res => {
// Stop button loading
this.isSubmittingArticle = false;
// Show alert message
this.snackbar = {
isVisible: true,
color: "success",
text: "Article submited successfully"
};
})
.catch(error => {
// Stop button loading
this.isSubmittingArticle = false;
// Show alert
// Show alert message
this.snackbar = {
isVisible: true,
color: "error",
text: error
};
}
});
}
},
上面提到的代码保存了我想更改路由的文章,如果表单提交了所有验证验证(如空白、数字等),如果没有,则不应更改路由。 谢谢 现在我正在使用此代码更改路线:
beforeRouteLeave(to, from, next) {
const answer = window.confirm(
"you might lose the data, please save the data before you leave."
);
if (answer) {
this.handleArticleSaveDraft();
next();
} else {
next(false);
}
谢谢。
【问题讨论】:
-
@RobertHarvey 感谢您的回复,但我想在 beforeRouteLeave() 中使用提到的两个东西
-
向我们展示您目前拥有的代码。
-
@Dhruvil Dave 查看更新的评论
标签: javascript vue.js vue-router