【发布时间】:2019-01-17 03:32:42
【问题描述】:
我有两个名为 items 和 itemsOrg 的数据对象
var vm = new Vue({
el: '#divVM',
mixins: [mix],
data: {
items: [],
itemsOrg:[],
// ....
},
当页面加载时,我进行 AJAX 调用以从 MySQL 表中获取数据并将其分配给 items 和 itemsOrg 对象。
function getMustacheVariables()
{
$.ajax({
type: "POST",
url: "adminAjax.php",
data: {
actionID: 'GET_DATA',
},
dataType: "json",
success: function(data)
{
vm.items= data;
vm.itemsOrg = data;
}
// ...
但是,当我更新 Vm.items 时, vm.itemsOrg 也会自动更新,不知道为什么这两个链接在一起。这是console.log的快照
vm.items[0]["key"]
"agent"
vm.itemsOrg[0]["key"]
"agent"
vm.items[0]["key"] = "new_key"
"new_key"
vm.itemsOrg[0]["key"]
"new_key"
vm.itemsOrg[0]["key"] = "updated_key"
"updated_key"
vm.items[0]["key"]
"updated_key"
这两个对象有联系的原因吗?我什至尝试使用 vm.items.slice() 以及 push() 将 vm.items 分配给 vm.itemsOrg,但是这两个对象始终是链接的。
感谢您的帮助。
【问题讨论】:
-
您正在为两者分配数据。你期待什么?
-
我原来的帖子有错字。请查看更新的代码。
-
我还是一样。
-
vm.items= data; vm.itemsOrg = data;表示两个变量现在都引用同一个对象。您需要 clonedata而不是简单地将其他变量分配为等于它。 -
尝试对数组使用
[...data],或者对对象使用{...data}。
标签: javascript vue.js