为什么在关闭带有 vee 验证表单的模态时出现 attach() 错误

Why am I getting attach() error when closing a modal with a vee-validated form

当我使用 vue.js.[=11 关闭包含经过 vee 验证的 "update" 表单的 bootstrap 模态 (bootstrap-vue) 时出现此错误=]

main.js:477686 Uncaught (in promise) Error: [vee-validate] Validating a non-existent field: "#35". Use "attach()" first.  

它发生在所有带有表单的模态框上,因此导致它的任何一种表单都没有什么独特之处。我只是想知道在哪里可以查看为什么我会在 bootstrap 模式关闭时在更新表单时遇到同样的错误。如果重要的话,我正在使用 vee-validate v2。

这是因为 vee-validate v2 中的指令在卸载字段时取消注册字段,这就是当您的模式消失时发生的情况。

由于 vee-validate 以异步方式进行验证,您的表单很可能会在关闭之前触发一次验证尝试。如果您使用的是谴责验证,这一点尤其明显。

有多种解决方法,如果您使用的是谴责验证,那么您可以通过谴责金额延迟模态框的关闭。否则,您可以使用 nextTickPromise.resolve 关闭您的模式,这将允许它们在验证完成后关闭。