我有一个 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/