【发布时间】:2018-08-04 08:42:23
【问题描述】:
我在 Knockout 中有一个可观察数组,例如 data,其中包含具有可观察属性的对象。在我的应用程序的一部分中,我希望允许用户添加到这个数组并最终搞砸它,但如果他们取消将数组恢复到原始状态。
我想到的一个解决方案是创建一个名为 dataCopy 的副本,以在取消时替换原始数组,但这只会创建另一个指向相同基础数据的指针,因此它也会反映所做的更改这不是我想要的。
我尝试通过ko.toJS(data) 将其转换为javascript,这会创建一个数据的js 数组,但是所有对象都失去了它们的可观察属性,当我使用ko.observableArray(dataCopy) 重新创建数据时,应用程序会因为对象的属性不再可观察。
如何创建一个剔除数组的克隆而不是另一个指针?
【问题讨论】:
-
你可以试试
this.activeProducts = ko.observableArray(jQuery.extend(true, {}, products)); -
@NavoneelTalukdar 在这种情况下,可观察的属性将丢失。这和
ko.toJS没有太大区别