在vue中把数组中的数据给了某个变量,这两者就关联起来了吗?

小蚊酱
  • 4.8k

比如我有个list数组列表A,当我要修改某个位置的元素时,我就先把这组数据取出来,放到另一个变量B中,然后把这个变量中的数据绑定到dialog中,当点击保存按钮时,我再把这个变量B的数据重新Vue.set到原来的数组A中。但是当我在dialog中修改B时,A也同时改了。

methods : {
    modify(index){
        this.selectedlist = this.list[index]; // 把list中index位置的数据取出来
    }
}

我想的是,只修改selectedlist,当我保存时,使用Vue.set在把selectedlist中的数据保存到list中。

补充: list[index]是object类型的数据。

难道说要把dialog放到组件中,通过props传递参数才可以吗?谢谢

回复
阅读 5.3k
2 个回答
✓ 已被采纳

JS 中 数组 和 Object 是 引用传递

如果不需要同时修改掉,就需要 创建一个副本了。

创建副本可以,let newXXX = JSON.parse(JSON.stringify(xxx));
或者用 Object.assign

这个问题不关vue的事
应该是你的list[index]是一个对象,
所以你在把list[index]赋值给selectedlist的时候,
其实是一个引用传递而不是值传递,selectedlist和list[index]指向的是同一个内存地址,
selectedlist就相当于一个指针指向了这个对象list[index]在内存中的地址,

如果你想把list[index]的值真正复制给selectedlist请使用下面的方法

this.selectedlist = JSON.parse(JSON.stringify(this.list[index]))
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏