the call to this.$options.data () changes the this in the current data and no longer points to the current Vue instance. There is no $dayjs () method on this this, so an error is reported.
solution:
introduce this method into utils.js
import {getTime} from '@/utils/utils.js'
data () {
return {
start_time: getTime()
}
}
The
$dayjs
method does not exist on
this
, and is not bound to
$dayjs
. If npm is introduced, just use it directly
both of you upstairs are very clear about the
@ qinchao888 principle, and the solution is right. Awesome!
because I use this function on a lot of pages, it's troublesome to introduce every page I use, so it's better to bind it globally.
so after understanding your answer, I slightly modified my data and related methods
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())
},
there are too many forms in the project, which are emptied after each submission. Manual re-assignment is both troublesome and error-prone, and this method of clearing data is very practical;
on the PC side, element-ui form verification is introduced, and calling this method will lead to automatic verification when entering the form, which has not been solved yet.