我无法在v-dialog中重置vuetify验证。
此codepen是我所拥有的简化版本。
https://codepen.io/yuukive/pen/BVqpEZ
使用上面的代码,如果可以的话
(打开对话框->按下保存按钮->(验证失败)->按下关闭按钮->再次打开对话框),
当我再次打开对话框时,它已经被验证...
是否可以在用户第二次打开验证之前重置验证?
(js)
new Vue({
el: '#app',
data: () => ({
dialog: false,
emailRules: [v => !!v || 'Name is required']
}),
methods: {
onSave() {
if (!this.$refs.form.validate()) return
dialog = false
}
}
})
(模板)
<div id="app">
<v-app id="inspire">
<v-layout row justify-center>
<v-dialog v-model="dialog" persistent max-width="500px">
<v-btn slot="activator" color="primary" dark>Open Dialog</v-btn>
<v-card>
<v-card-title>
<span class="headline">Email</span>
</v-card-title>
<v-form ref="form">
<v-card-text>
<v-container grid-list-md>
<v-layout wrap>
<v-flex xs12>
<v-text-field label="Email" required :rules="emailRules"></v-text-field>
</v-flex>
</v-layout>
</v-container>
<small>*indicates required field</small>
</v-card-text>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn color="blue darken-1" flat @click.native="dialog = false">Close</v-btn>
<v-btn color="blue darken-1" flat @click.native="onSave">Save</v-btn>
</v-card-actions>
</v-form>
</v-card>
</v-dialog>
</v-layout>
</v-app>
</div>
答案 0 :(得分:11)
Example使用:
this.$refs.form.reset()
请注意,尽管reset()
清除了验证,但同时也清除了输入。
您可以关注this issue,以查看有关此内容的进一步更新。
所以您也许可以查看对话框的值并重置表格:
watch: {
dialog() {
this.$refs.form.reset()
}
}
答案 1 :(得分:1)
resetValidation()
仅清除验证错误,reset()
也将清除输入字段。
答案 2 :(得分:0)
this.$refs.form.reset()
可能适用于JavaScript
,但是TypeScript
的编译器抱怨键入。即使在serve
期间,您只能在终端上看到错误而不会破坏应用程序,但实际上,当您尝试build
来运行应用程序时,错误实际上会中断。
创建一个新变量并将其分配为any
类型,如下例所示:
const refForm: any = this.$refs.form;
refForm.reset();