Tengo un componente con un conjunto específico de datos iniciales:
data: function (){
return {
modalBodyDisplay: 'getUserInput', // possible values: 'getUserInput', 'confirmGeocodedValue'
submitButtonText: 'Lookup', // possible values 'Lookup', 'Yes'
addressToConfirm: null,
bestViewedByTheseBounds: null,
location:{
name: null,
address: null,
position: null
}
}
Estos son datos para una ventana modal, por lo que cuando se muestre, quiero que comience con estos datos. Si el usuario cancela desde la ventana, quiero restablecer todos los datos a esto.
Sé que puedo crear un método para restablecer los datos y simplemente establecer manualmente todas las propiedades de los datos a su original:
reset: function (){
this.modalBodyDisplay = 'getUserInput';
this.submitButtonText = 'Lookup';
this.addressToConfirm = null;
this.bestViewedByTheseBounds = null;
this.location = {
name: null,
address: null,
position: null
};
}
Pero esto parece realmente descuidado. Significa que si alguna vez hago un cambio en las propiedades de datos del componente, tendré que asegurarme de recordar actualizar la estructura del método de reinicio. Eso no es absolutamente horrible ya que es un pequeño componente modular, pero hace que la parte de optimización de mi cerebro grite.
La solución que pensé que funcionaría sería tomar las propiedades de los datos iniciales en un ready
método y luego usar esos datos guardados para restablecer los componentes:
data: function (){
return {
modalBodyDisplay: 'getUserInput',
submitButtonText: 'Lookup',
addressToConfirm: null,
bestViewedByTheseBounds: null,
location:{
name: null,
address: null,
position: null
},
// new property for holding the initial component configuration
initialDataConfiguration: null
}
},
ready: function (){
// grabbing this here so that we can reset the data when we close the window.
this.initialDataConfiguration = this.$data;
},
methods:{
resetWindow: function (){
// set the data for the component back to the original configuration
this.$data = this.initialDataConfiguration;
}
}
Pero el initialDataConfiguration
objeto está cambiando junto con los datos (lo cual tiene sentido porque en el método de lectura nuestro initialDataConfiguration
está obteniendo el alcance de la función de datos.
¿Existe alguna forma de obtener los datos de configuración inicial sin heredar el alcance?
¿Estoy pensando demasiado en esto y hay una manera mejor / más fácil de hacer esto?
¿La codificación de los datos iniciales es la única opción?