我无法理解...想要这个vue! 如果可以的话请帮忙! 这是我的代码
var groupadding = new Vue({
el: '#groupAdd',
data:{
currentFullData: [],
localData: []
},
methods: {
getDepartment() {
var sendData = id; // this is example
this.$http.post('some api ', sendData, {emulateJSON: true})
.then( resp => {
this.currentFullData = resp.data;
}
},
getLocalDepartment() {
this.localData = this.currentFullData;
}
}
})
例如,在currentFullData中,我有4个布尔字段,'创建' ,'阅读','更新','删除'
这4个字段也获得了localData,但是当我更改了localData中的一些时,它们也改变了currentFullData !!!!!!!!!!!!!!!
soooooo任何人都可以解释我wtf是这个吗?!?!?!
答案 0 :(得分:1)
这是因为您实际上正在修改同一个对象(就像您编写的this.localData = this.currentFullData;
)
如果要使用currentFullData初始化this.localData,则需要复制它:
this.localData = Object.assign({}, this.currentFullData);
请参阅https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
答案 1 :(得分:1)
感谢您的提问。问题不在于vue和数据值'currentFullData'和'localData'。由于您的数据变量是数组,因此当您分配像this.localData = this.currentFullData
这样的值时,this.localData
是指向this.currentFullData
的指针。因此,当您更改localData时,currentFullData也会更改。
因此,为避免这种情况,请将this.currentFullData
的引用传递给this.localData
,如this.localData = this.currentFullData.slice()
要了解更多信息,请参阅this question about arrays on stackoverflow