11
在Knockout中克隆Observable对象以创建一种事务机制的最佳方法是什么?
例如编辑这种模式:
克隆observables的最佳方法是什么?
var Action = function (name, ownerType, condition, expression, args) {
var self = this;
this.name = ko.observable(name);
this.ownerType = ko.observable(ownerType);
this.condition = ko.observable(condition);
this.expression = ko.observable(expression);
this.args = ko.observable(args);
};
我要保存对象的状态之前,用户将编辑。如果用户将取消编辑 - 回滚对象状态。
简单的方法是创建一个像另一个项目:
self.tempAction = new Action(action.name(), action.ownerType(), action.condition(), action.expression(), action.args());
但我不知道它是优雅的解决方案..
因此,任何想法?
难道你不只是使用ko.mapping插件从原始源对象映射到新的目标对象? – jaffa
@jaffa - 是的,映射插件将是一个合适的选项。然而,对于微不足道的需求来说,这可能是过度的。另外,我发现'extendObservable'函数在映射插件不需要应用程序范围的情况下非常有用。 – ericb
这是如何与ko.computed值一起使用的?我会认为使用toJSON和JSON.parse复制一个对象将失去其所有计算值。 –