【发布时间】:2018-11-27 17:22:23
【问题描述】:
我的应用中有大量表单,用户可以在其中选择编辑、还原或保存对对象的更改,这些更改最终会保存到后端。
与此非常相似:(代码在另一个问题中找到)
https://jsfiddle.net/k5j6zj9t/22/
var app = new Vue({
el: '#app',
data: {
isEditing: false,
user: {
firstName: 'John',
lastName: 'Smith',
}
},
mounted() {
this.cachedUser = Object.assign({}, this.user);
},
methods: {
save() {
this.cachedUser = Object.assign({}, this.user);
this.isEditing = false;
},
cancel() {
this.user = Object.assign({}, this.cachedUser);
this.isEditing = false;
}
}
})
由于v-model 绑定会立即更改底层对象,因此我必须首先创建对象的克隆。此外,无论对象是否处于编辑状态,我都需要保存一个数据成员。
将此代码乘以更多表单和字段,我最终会得到太多数据成员和大量样板代码。
在 django 等服务器框架中,模型在保存之前处于“临时状态”,所以我可以这样编辑
user.first_name = 'aa' # temporary object in memory
user.save() # saved to the db
我的问题,是否有一个模型组件/模式可以让 vue 更好地处理这个任务?
将保持模型状态的东西 - 即isEditing,自动克隆对象以进行表单编辑,恢复更改等。
这样我就不用为这么多的对象写这样的代码了?
【问题讨论】: