Aquí está mi situación. Estoy usando el complemento de mapeo knockout para crear una jerarquía de modelo de vista observable para mí. Mi jerarquía tiene elementos anidados en ella. En un punto particular de la jerarquía, quiero poner un botón Agregar para insertar una nueva copia en blanco de ese elemento en el conjunto observable. El problema es que no puedo decir whateverArray.push (nuevo MyObject()).¿Cómo hago una copia profunda de un objeto knockout que fue creado por el plugin de mapeo
Dado que el complemento de mapeo realmente creó toda la jerarquía para mí, no tengo acceso a "MyObject". Por lo tanto, parece que lo único que puedo hacer para insertar un nuevo elemento es mirar un elemento anterior y copiarlo. Probé la función ko.utils.extend, pero parece que no está haciendo un clon real. Me devuelve un objeto, pero cuando actualizo ese objeto, todavía afecta al objeto original desde el que se copió.
Ver jsFiddle example
¡Gracias! Eso parece estar funcionando. – emirhosseini
Sin embargo, todavía me pregunto si existe una forma mejor de nocaut para simplemente hacer un clon real de un objeto que tenga elementos observables. Esto realmente no sería un problema si no estuviese usando el plugin de mapeo ya que yo sería el que crearía cada objeto hijo yo mismo y simplemente podría comenzar uno nuevo directamente en vez de intentar copiar ... – emirhosseini
Ah, yo lo tengo. Estaba en el proceso de darme por vencida y escribir un largo comentario sobre mis hallazgos ... luego tuve una revelación y me di cuenta. –