Qual è il modo migliore per clonare gli oggetti osservabili in Knockout per rendere il tipo di meccanismo delle transazioni?
ad esempio la modifica di questo modello:
Il modo migliore per clonare gli osservabili?
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);
};
voglio salvare lo stato di tale oggetto prima che l'utente sarà modificarlo. E se l'utente annullerà la modifica, lo stato dell'oggetto rollback.
modo più semplice è semplicemente creare un altro progetto come:
self.tempAction = new Action(action.name(), action.ownerType(), action.condition(), action.expression(), action.args());
Ma io non sono sicuro che sia soluzione elegante ..
Quindi, tutte le idee?
Non potresti usare il plugin ko.mapping per mappare dall'oggetto di origine originale al nuovo oggetto di destinazione? – jaffa
@jaffa - sì, il plugin di mappatura sarebbe un'opzione adatta. Tuttavia può essere eccessivo per esigenze banali. Inoltre, ho trovato la funzione 'extendObservable' abbastanza utile in situazioni in cui il plugin di mappatura non era necessario per tutta l'applicazione. – ericb
Come funziona con i valori di ko.computed? Penserei che usando toJSON e JSON.parse per copiare un oggetto perderanno tutti i suoi valori calcolati. –