需要初始化Vue数据"设置"来自其他对象" original_settings"但是当数据"设置"时不要改变这个对象。改变了。如何实现?
new Vue({
el: "#app",
data: {
settings: original_settings
}
});
答案 0 :(得分:3)
您可以使用JSON.parse(JSON.stringify(obj))
创建对象的deep
克隆副本。
new Vue({
el: "#app",
data: {
settings: JSON.parse(JSON.stringify(original_settings))
}
});
另一种解决方案是使用Object.assign
中的ES6
。
new Vue({
el: "#app",
data: {
settings: Object.assign({}, original_settings)
}
});
答案 1 :(得分:0)
我不认为这是一个很好的解决方案。 查看有关数据的文档: https://vuejs.org/v2/api/#data
文档:
不建议观察具有自己的有状态行为的对象。 一旦观察到,您就不能再向根数据对象添加反应属性
如果需要绑定外部对象的数据,可以使用计算属性来访问它们,也可以使用商店(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
}
}
}
})