- 表单比较复杂,在关闭时,使用这个方法初始化数据:
closeDialog(){
Object.assign(this.$data, this.$options.data())
},
- 但是data中引入了外部js方法:
start_time:this.$dayjs().format("YYYY-MM-DD"),
- 在调用closeDialog是,会报错:
- 请问怎么处理?
closeDialog(){
Object.assign(this.$data, this.$options.data())
},
start_time:this.$dayjs().format("YYYY-MM-DD"),
楼上两位讲的都对
@qinchao888 原理讲的很清楚,解决方案也是对的,厉害!
由于我很多页面都要用到这个函数,所以每个用到的页面都引入比较麻烦,还是绑定在全局比较好。
所以在理解你的答案后,我小小改造了一下自己的data,及相关方法
1. 默认设为‘’,清除时就无影响
data(){
return{
start_time: '',
}
},
2. 在watch,mounted,或者小程序的onShow中重新赋值
watch:{
propsData(newValue, oldValue) {
this.start_time = this.$dayjs().valueOf()
}
},
3. 调用清除数据的方法:
resetData() {
Object.assign(this.$data, this.$options.data())
},
项目中有太多表单,在每次提交完成后都用清空,手动重新赋值既麻烦有容易出错,这个清除数据的方法非常实用;
在pc端时,引入了element-ui的表单验证,调用这个方法会导致进入表单时就自动验证了,暂未解决。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
2 回答4.7k 阅读✓ 已解决
4 回答4.3k 阅读✓ 已解决
调用this.$options.data()后使得当前data中的this发生变化,不再指向当前的Vue实例,该this上没有$dayjs()方法,故报错。
解决方案:
将该方法写在utils.js中引入