¿Cuál es la mejor manera de clonar Objetos observables en Knockout para hacer un mecanismo tipo de transacción?
Por ejemplo la edición de este modelo:
¿La mejor manera de clonar 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);
};
Quiero guardar el estado de ese objeto antes que el usuario va a editarlo. Y si el usuario cancelará la edición, revertir el estado del objeto.
forma más sencilla es crear otro proyecto como:
self.tempAction = new Action(action.name(), action.ownerType(), action.condition(), action.expression(), action.args());
Pero no estoy seguro de que es elegante solución ..
Así, alguna idea?
¿No podría usar simplemente el complemento ko.mapping para mapear desde el objeto fuente original hasta el nuevo objeto objetivo? – jaffa
@jaffa - sí, el complemento de mapeo sería una opción adecuada. Sin embargo, puede ser excesivo para necesidades triviales. Además, he encontrado que la función 'extendObservable' es bastante útil en situaciones en las que el complemento de mapeo no era necesario para toda la aplicación. – ericb
¿Cómo funciona esto con los valores de ko.computed? Creo que usar toJSON y JSON.parse para copiar un objeto perderá todos sus valores calculados. –