如何取消/恢复对可观察模型的更改(或使用未经修改的副本替换数组中的模型)

Dam*_*son 23 javascript observable knockout.js

我有一个viewModel,带有一个带有可观察变量的observableArray对象.

我的模板使用编辑按钮显示数据,该按钮隐藏显示元素并显示带有值的输入元素.您可以开始编辑数据,然后您可以选择取消.我希望这个取消恢复到对象的未更改版本.

我尝试通过这样做来克隆对象:

viewModel.tempContact = jQuery.extend({}, contact);
Run Code Online (Sandbox Code Playgroud)

要么

viewModel.tempContact = jQuery.extend(true, {}, contact);
Run Code Online (Sandbox Code Playgroud)

但是一旦联系人,viewModel.tempContact就会被修改.

是否有任何内置于KnockoutJS来处理这种情况,或者我最好只是创建一个具有完全相同细节的新联系人,并在取消时用新联系人替换修改后的联系人?

任何意见是极大的赞赏.谢谢!

RP *_*yer 16

有几种方法可以处理这样的事情.您可以使用与当前值相同的值构造一个新对象,并在取消时将其抛弃.您可以添加其他可观察对象以绑定到编辑字段并将其保留在接受上,或者查看此帖子以获取将此功能封装到可重用类型中的想法(这是我的首选方法).