Quelle est la meilleure façon de cloner des objets observables dans Knockout pour faire le type de mécanisme de transactions?
Par exemple l'édition de ce modèle:
Meilleure façon de cloner les 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);
};
Je veux enregistrer l'état de cet objet avant utilisateur modifier. Et si l'utilisateur va annuler l'édition - l'état de l'objet de restauration.
simple est de créer juste un autre projet comme:
self.tempAction = new Action(action.name(), action.ownerType(), action.condition(), action.expression(), action.args());
Mais je ne suis pas sûr que c'est une solution élégante ..
, quelles idées?
Pourriez-vous utiliser simplement le plugin ko.mapping pour mapper de l'objet source original au nouvel objet cible? – jaffa
@jaffa - oui, le plugin de cartographie serait une option appropriée. Cependant, il peut être exagéré pour des besoins triviaux. En outre, j'ai trouvé la fonction 'extendObservable' assez utile dans les situations où le plugin de mapping n'était pas nécessaire à l'application. – ericb
Comment cela fonctionne avec les valeurs ko.computed? Je pense qu'utiliser toJSON et JSON.parse pour copier un objet perdra toutes ses valeurs calculées. –