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

标签 javascript knockout.js observable

我有一个 viewModel,其中包含带有可观察变量的对象的 observableArray。

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

我尝试通过执行以下操作来克隆对象:

viewModel.tempContact = jQuery.extend({}, contact);

viewModel.tempContact = jQuery.extend(true, {}, contact);

但是 viewModel.tempContact 会在联系人修改后立即修改。

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

非常感谢任何建议。谢谢!

最佳答案

有几种方法可以处理这样的事情。您可以构造一个与当前对象具有相同值的新对象,并在取消时将其丢弃。您可以添加额外的可观察对象来绑定(bind)到编辑字段并将它们保留在接受中或查看此 post有关将此功能封装到可重用类型中的想法(这是我的首选方法)。

关于javascript - 如何取消/恢复对可观察模型的更改(或用未更改的副本替换数组中的模型),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5874860/

相关文章:

typescript - 如何从类似于 Angular 中的 http 的静态数据创建 Observable?

swift - 使用 RXSwift 等待多个可观察请求完成

javascript - Angularjs:单选按钮选择更改时更新模型

javascript - 过滤对象键和值

javascript - Knockout.mapping.fromJSON 因 ' 字符而失败

javascript - Knockout 中当前值的名称

javascript - 检测 href 点击

javascript - 为什么 $ ('a.current' ).parent ('li' ).addClass ('current' );不管用?

javascript - knockout 值(value)分配不起作用

angular - Rxjs 组合动态数量的可观察量