js vue 更好的初始化data中的属性

项目用的是vue,由于是做后台管理系统的,所以涉及很多的输入框,每个都v-model绑定属性。场景是:页面有一个“重新填写”的操作,这时,应该是清空所有的数据。目前我的做法是每个输入框作为data对象的属性都单独绑定一个属性,当点击‘重新填写’时,需要一个一个的取清空,这样的处理感觉不是很好。野路子出身,希望请教各位的做法。希望得到各位的指教,代码如下:

data(){
        return {
            modalOrder:'',
            modalMachineName:'',
            modalWorkshopName:'',
            modalProcessName:'',
            modalRepairName:'',
            modalRepairTime:'',
            modalMaintainName:'',
            modalOrderName:'',
            modalOrderTime:'',
            modalOrderState:'',
            ...........
}

initEvent(){
            this.editModalStatus = false;
            this.modalOrder = '';
            this.modalMachineName = '';
            this.modalWorkshopName = '';
            this.modalProcessName = '';
            this.modalRepairName = '';
            this.modalRepairTime = '';
            this.modalMaintainName = '';
            this.modalOrderName = '';
            this.modalOrderTime = '';
            this.modalOrderState = '';
            this.modalFaultDescribe = '';
            this.modalRepairDescribe = '';
            this.modalRepairStart = '';
            this.selectFaultTypeId = '';
            this.modalRepairOver = '';
            this.modalFaultType = '';
            this.isRepair = '';
            this.replacePart = '';
            this.checkObj = null;
        },
阅读 5k
2 个回答

举栗子

initEvent(){
    this.$data = JSON.parse(JSON.stringify(this.initData))
}
  created(){
      this.initData = JSON.parse(JSON.stringify(this.$data)) 
    }

初始值深拷贝存在一个地方(随便什么地方),然后初始化的时候赋值。
还有data定义我觉得你最好写成

modal:{
    order:'',
    machineName:'',
    ...
}
初始化data对象
    Object.assign(this.$data, this.$options.data.call())
    // or
    Object.assign(this.$data, this.$options.data.call(this))
初始化data对象中的某一个属性
    this.form = this.$options.data.call().form
    // or
    this.form = this.$options.data.call(this).form
值得注意的是

javascript 的call方法如果没有传递第一个参数,this 的值将会被绑定为全局对象。另外,在严格模式下,this 的值将会是 undefined。从各方面来说,应当显式的使用 .call(this) 的用法

延展
    // https://blog.csdn.net/mocoe/article/details/89682022
    Object.assign(this.$data, this.$options.data()) // ❌ props将为undefined
        
    Object.assign(this.$data, this.$options.data) // ❌ is function
    
    this.form = this.$options.data.form // ❌ is undefined
推荐问题