Inertia.JS , Laravel 如果没有验证错误则关闭模态
Inertia.JS , Laravel closing modal if no validation errors
所以我有以下方法:
methods: {
submit() {
this.$inertia.post('/projects', this.form);
this.openModal = false;
},
},
但即使存在验证错误,它也会关闭我的模式。
我也试过
this.$inertia.post('/projects', this.form);
if(!this.$page.props.errors) {
this.openModal = false;
}
如果有验证错误,它不会关闭模态,但如果没有验证错误,它不会关闭它。
this.$inertia.post
是异步执行的,因此 this.openModal = false
很可能会在您收到服务器响应之前完成。如果您想了解我的意思,请将 sleep(10);
放在 /projects
路由的控制器中的某个位置 - 在 Inertia 从服务器返回响应之前,无论您在 this.$inertia.post
之后拥有什么代码都会被执行。
我假设您的控制器重定向回来。如果您的模态框在页面加载时默认关闭,那么您可以在出现以下错误时保持模态框打开:
this.$inertia.post(
this.route("/projects"),
this.form,
{
preserveState: (page) => Object.keys(page.props.errors).length > 0,
}
);
请参阅 Inertia docs 中的 组件状态 部分以供参考。
所以我有以下方法:
methods: {
submit() {
this.$inertia.post('/projects', this.form);
this.openModal = false;
},
},
但即使存在验证错误,它也会关闭我的模式。 我也试过
this.$inertia.post('/projects', this.form);
if(!this.$page.props.errors) {
this.openModal = false;
}
如果有验证错误,它不会关闭模态,但如果没有验证错误,它不会关闭它。
this.$inertia.post
是异步执行的,因此 this.openModal = false
很可能会在您收到服务器响应之前完成。如果您想了解我的意思,请将 sleep(10);
放在 /projects
路由的控制器中的某个位置 - 在 Inertia 从服务器返回响应之前,无论您在 this.$inertia.post
之后拥有什么代码都会被执行。
我假设您的控制器重定向回来。如果您的模态框在页面加载时默认关闭,那么您可以在出现以下错误时保持模态框打开:
this.$inertia.post(
this.route("/projects"),
this.form,
{
preserveState: (page) => Object.keys(page.props.errors).length > 0,
}
);
请参阅 Inertia docs 中的 组件状态 部分以供参考。