Ecco il mio scenario. Sto utilizzando il plug-in di mappatura a eliminazione diretta per creare una gerarchia viewmodel osservabile per me. La mia gerarchia contiene elementi nidificati. In un punto particolare della gerarchia voglio inserire un pulsante Aggiungi per inserire una nuova copia vuota di quell'elemento nel campo observablearray. Il problema è che non posso semplicemente dire qualunque Array.push (nuovo MyObject()).Come faccio una copia profonda di un oggetto knockout che è stato creato dal plugin di mappatura
Poiché il plug-in di mappatura ha effettivamente creato l'intera gerarchia per me, non ho accesso a "MyObject". Quindi sembra che l'unica cosa che posso fare per inserire un nuovo oggetto è guardare un articolo precedente e copiarlo. Ho provato la funzione ko.utils.extend, ma non sembra che stia facendo un vero clone. Mi restituisce un oggetto, ma quando aggiorno quell'oggetto influisce ancora sull'oggetto originale da cui è stato copiato.
Vedi jsfiddle example
Grazie! Sembra funzionare. – emirhosseini
Tuttavia, mi chiedo ancora se ci sia un modo migliore in KO per fare semplicemente un vero clone di un oggetto che contiene degli osservabili. Questo non sarebbe un problema se non usassi il plug-in di mappatura da allora sarei io a creare personalmente ogni oggetto figlio e potrei semplicemente aggiungerne uno direttamente piuttosto che provare a copiare ... – emirhosseini
Ah, I fatto. Stavo per arrendermi e scrivere un lungo commento sulle mie scoperte ... poi ho avuto una rivelazione e l'ho capito. –