对象数组深拷贝(表单提交页面,有重置功能) vue项目中

Posted sunshineG

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对象数组深拷贝(表单提交页面,有重置功能) vue项目中相关的知识,希望对你有一定的参考价值。

表单提交需要重置功能时,如果不先把原始数据拷贝一份,修改之后,再重置会回不去!!!(对象或数组引用数据类型)

封装一个公共的方法:如下,一般放在项目的utils文件夹中utils.js中,

/**
 * @param data 需要深拷贝的数据
 * @returns {*} 返回拷贝之后的数据
 */
  function deepCopy(data){
    const t = typeof data;
    let o;
    if(t===\'array\'){
        o = []
        for(let i = 0;i<data.length;i++){
            o.push(deepCopy(data[i]))
        }
    }else if(t===\'object\'){
        o = {}
        for(let i in data){
            o[i] = deepCopy(data[i])
        }
    }
    return o;
}
export default{
    deepCopy
}

使用:

<template>
    
</template>
<script>
import utils from \'@/utils/utils\'

export default {
    data(){
       return {
           formInfo:{},//表单的初始数据
           defaultFormInfo:{},
       } 
    },
    methods:{  
        reset(){//重置按钮
            this.formInfo = this.defaultFormInfo
        },
        infoCommit(){
            let params = utils.deepCopy(this.formInfo)
            // params 编辑好的内容传到后端
        },

    },
    created(){
        // 使用深拷贝的目的就是:防止formInfo的修改影响到defaultFormInfo,想要重置(不想修改)的时候,点击重置回不去
        this.defaultFormInfo = utils.deepCopy(this.formInfo)//先复制一份表单的初始数据
    }

}
</script>

以上是关于对象数组深拷贝(表单提交页面,有重置功能) vue项目中的主要内容,如果未能解决你的问题,请参考以下文章

vue组件间传递对象的深拷贝

vue采用扩展运算符和深拷贝的区别

vue合并两个对象数组

Vue实现对数组对象的深拷贝复制

Vue实现对数组对象的深拷贝复制

jquery怎样深拷贝一个数组