Ich habe eine Komponente mit einem bestimmten Satz von Startdaten:
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
}
}
Dies sind Daten für ein modales Fenster. Wenn es angezeigt wird, möchte ich, dass es mit diesen Daten beginnt. Wenn der Benutzer das Fenster abbricht, möchte ich alle Daten auf dieses zurücksetzen.
Ich weiß, dass ich eine Methode zum Zurücksetzen der Daten erstellen und einfach alle Dateneigenschaften manuell auf das Original zurücksetzen kann:
reset: function (){
this.modalBodyDisplay = 'getUserInput';
this.submitButtonText = 'Lookup';
this.addressToConfirm = null;
this.bestViewedByTheseBounds = null;
this.location = {
name: null,
address: null,
position: null
};
}
Aber das scheint wirklich schlampig. Wenn ich jemals Änderungen an den Dateneigenschaften der Komponente vornehme, muss ich sicherstellen, dass ich daran denke, die Struktur der Rücksetzmethode zu aktualisieren. Das ist nicht absolut schrecklich, da es sich um eine kleine modulare Komponente handelt, aber es lässt den Optimierungsteil meines Gehirns schreien.
Die Lösung, von der ich dachte, dass sie funktionieren würde, wäre, die anfänglichen Dateneigenschaften in einer ready
Methode zu erfassen und diese gespeicherten Daten dann zum Zurücksetzen der Komponenten zu verwenden:
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;
}
}
Das initialDataConfiguration
Objekt ändert sich jedoch zusammen mit den Daten (was sinnvoll ist, da bei der initialDataConfiguration
Lesemethode der Umfang der Datenfunktion ermittelt wird.
Gibt es eine Möglichkeit, die anfänglichen Konfigurationsdaten abzurufen, ohne den Bereich zu erben?
Überdenke ich das und es gibt einen besseren / einfacheren Weg, dies zu tun?
Ist die Hardcodierung der Anfangsdaten die einzige Option?