zoukankan      html  css  js  c++  java
  • vue.js中数据引用后原数据被改变

     var vm = null,
            cateNature =
                [
                    {
                        "attrId": "592e95a2e820cc1813f0ba4e",
                        "isMultiple": 1,
                        "seq": 0,
                        "isEnum": 1,
                        "attrName": "热门游戏",
                        "isMustInput": 0,
                        "isShow": 1,
                        "attrValues": [
                            {
                                "seq": 0,
                                "isShow": 1,
                                "attrValueName": "英雄联盟",
                                "attrValueId": "10000"
                            },
    
                        ]
                    },
                    {
                        "attrId": "592e95a2e820cc1813f0ba4f",
                        "isMultiple": 1,
                        "seq": 1,
                        "isEnum": 1,
                        "attrName": "服务类型",
                        "isMustInput": 0,
                        "isShow": 1,
                        "attrValues": [
                            {
                                "seq": 0,
                                "isShow": 1,
                                "attrValueName": "教玩",
                                "attrValueId": "10100"
                            },
    
                        ]
                    }
                ];
        vm = new Vue({
            el: '#demo',
            data: {
                price: [],
                type: [],
                testData: [],
                subnatrue: [],
                cateNature: cateNature,
    
            }
        })

    就这样一个数据结构,当时做项目的时候遇见了一个问题,var了一个变量来接收改变data数据里面的cateNature数据:

    var testdata = vm.cateNature;
    然后操作testdata的时候原来的cateNature数据跟着变了,

    查看vue数据绑定的时候才发现,因为最原始的的cateNature数据是一个数组或者对象,对于一个对象或者数组的时候他们等于是引用的地址是相同的所有就跟着变了;

    也就是深拷贝浅拷贝的问题。

    后台继续查找资料只要把数据来回转化一下就可以的:
    var testdata = JSON.parse(JSON.stringify(vm.cateNature));
    这样就可以了。

    var testdata = JSON.parse(JSON.stringify(vm.cateNature));
  • 相关阅读:
    使用RequireJS优化Web应用前端
    基线样式
    css层叠顺序
    摘录android工具类
    android中相关的图形类
    Google Android SDK开发范例------------20141119
    将博客搬至CSDN
    LightOJ1356 最大独立集 HK算法 素数分解
    求二分图最大匹配——Hopcroft-Krap算法
    HDU 6333 莫队分块 + 逆元打表求组合数
  • 原文地址:https://www.cnblogs.com/liAnran/p/11395618.html
Copyright © 2011-2022 走看看