Ho un componente con un set specifico di dati di partenza:
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
}
}
Questi sono dati per una finestra modale, quindi quando viene visualizzato voglio che inizi con questi dati. Se l'utente annulla dalla finestra, voglio ripristinare tutti i dati a questo.
So di poter creare un metodo per ripristinare i dati e ripristinare manualmente tutte le proprietà dei dati al loro originale:
reset: function (){
this.modalBodyDisplay = 'getUserInput';
this.submitButtonText = 'Lookup';
this.addressToConfirm = null;
this.bestViewedByTheseBounds = null;
this.location = {
name: null,
address: null,
position: null
};
}
Ma questo sembra davvero sciatto. Significa che se mai apporto una modifica alle proprietà dei dati del componente, dovrò assicurarmi di ricordarmi di aggiornare la struttura del metodo di ripristino. Non è assolutamente orribile poiché è un piccolo componente modulare, ma fa urlare la parte di ottimizzazione del mio cervello.
La soluzione che pensavo avrebbe funzionato sarebbe stata quella di afferrare le proprietà dei dati iniziali in un readymetodo e quindi utilizzare i dati salvati per ripristinare i componenti:
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;
}
}
Ma l' initialDataConfigurationoggetto sta cambiando insieme ai dati (il che ha senso perché nel metodo di lettura il nostro initialDataConfigurationsta ottenendo l'ambito della funzione dati.
C'è un modo per acquisire i dati di configurazione iniziali senza ereditare l'ambito?
Ci sto pensando troppo e c'è un modo migliore / più semplice per farlo?
L'hardcoding dei dati iniziali è l'unica opzione?