我现在有一个表单,表单提交成功后,希望组件恢复到初始状态,重置data数据,不想一个一个赋值初始化,太累了
看了下Vue 2的API,并没有提供这种方法。
不过为了重置data数据大可不必专门添加一个方法。Vue用的是数据驱动,如果data有改动的话会自动更新相关的DOM。你可以将初始data数据保存下来,等表单提交成功后,重新给data赋值就行。
另外一个方法是,Form表单元素提供了一个reset方法,你可以在表单提交成功后使用form.reset()方法来重置表单,如果你表单控件有绑定数据,那么data数据也会同样更新。
上面两种方法效果应该都是相同的
有的时候使用 Object.assign(this.$data, this.$options.data())
还不行,
例如 :
<script>
export default {
components: {},
props: {},
data() {
return {
form: {
value: '',
},
rules: {
value: [
{ required: true, message: this.$t('请选择'), trigger: 'change' }
],
},
}
},
computed: {},
watch: {},
created() {},
mounted() {},
methods: {}
}
</script>
这个时候使用 Object.assign(this.$data, this.$options.data())
提示异常: TypeError: this.$t is not a function
可以使用: this.form = this.$options.data.call(this).form
解决这种情况;
例如:
handleClose() {
if (this.$refs.form) this.$refs.form.resetFields()
this.form = this.$options.data.call(this).form
this.$emit('update:visible', false)
}
8 回答4.9k 阅读✓ 已解决
6 回答3.6k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
5 回答6.5k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
重新调用data方法,即可重置