我已经执行了如下所示的命令,它存储在单独的文件中,然后作为导入从"path“导入到vue组件中。
const myTemplate =
{
a:{
key11: undefined,
key12: undefined
},
b:{
key21: undefined,
key22: undefined
}
}
在组件内部,我使用这个myTemplate
对象来创建新的数据属性
<script>
data(){
getfields: myTemplate
}
</script>
在脚本中,我遍历myTemplate
并使用来自父组件的支柱分配它,父组件保存key11, key12 ,key21 ,...
的值,依此类推。
myTemplate
的目的是作为基本/标准格式,从输入的支柱中收集数据。
稍后,getfields
由v-for
在<template>
标记中循环以显示内容。
我将道具{key11: somevalue1, key12: somevalue2}
发送给我的子组件,与myTemplate
对象中的键匹配,使用此子组件中的方法更新getfields
中的相同键
最终结果:
{
a:{
key11: somevalue1,
key12: somevalue2
},
b:{
key21: undefined,
key22: undefined
}
}
问题:
在对象的情况下,JS复制引用并修改我的myTemplate
对象。
我想让我的myTemplate
完好无损,如果getfields
被改变了,我不能以任何方式改变它。
我尝试过的:
const getfields : JSON.parse(JSON.stringify(myTemplate))
让self=导入(“路径”).then((数据) =>{ self.getfields = data.default })
发布于 2022-02-11 09:32:53
我建议您使用Lodash库来用_.cloneDeep()克隆对象
例如:
import _ from 'lodash'
。。。
const getfields = _.cloneDeep(myTemplate)
这是我与Vuejs一起使用的库,用于防止原始元素中那些意外的修改,因为它只是复制它。
如果您访问互联网的权限有限,则应使用VanillaJs创建克隆函数,请参阅此https://medium.com/weekly-webtips/deep-clone-with-vanilla-js-5ef16e0b365c
https://stackoverflow.com/questions/71082749
复制