Javascript 如何初始化数据但不改变原始数据
需要从其他对象“原始设置”初始化Vue数据“设置”,但不需要在数据“设置”更改时更改此对象。如何做到这一点Javascript 如何初始化数据但不改变原始数据,javascript,php,laravel,vue.js,vuejs2,Javascript,Php,Laravel,Vue.js,Vuejs2,需要从其他对象“原始设置”初始化Vue数据“设置”,但不需要在数据“设置”更改时更改此对象。如何做到这一点 new Vue({ el: "#app", data: { settings: original_settings } }); 您可以使用JSON.parse(JSON.stringify(obj))来创建对象的deep克隆副本 new Vue({ el: "#app", data: { settings: J
new Vue({
el: "#app",
data: {
settings: original_settings
}
});
您可以使用
JSON.parse(JSON.stringify(obj))
来创建对象的deep
克隆副本
new Vue({
el: "#app",
data: {
settings: JSON.parse(JSON.stringify(original_settings))
}
});
另一种解决方案是使用对象。从ES6
分配
new Vue({
el: "#app",
data: {
settings: Object.assign({}, original_settings)
}
});
我认为这不是一个好的解决办法。
请参阅有关数据的文档:
文件:
不建议观察具有自身有状态行为的对象。
一旦观察到,就不能再向根数据对象添加被动属性
如果需要从外部对象绑定数据,可以使用计算属性访问它们,也可以使用存储(VueX)
您可以这样做:
var original_settings = { foo: 'var'}
new Vue({
el: '#el',
data: {
//empty
},
computed: {
foo: {
get: function () {
return original_settings.foo
},
set: function (value) {
original_setting.foo = value
}
}
}
})
小心使用Object.assign和嵌套对象。它对您有效吗?是的,全部有效。所以没有让我马上接受答案。