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 中的 组件状态 部分以供参考。