Ich habe eine Komponente mit einem bestimmten Satz von Ausgangsdaten:Gibt es eine geeignete Methode zum Zurücksetzen der Ausgangsdaten einer Komponente in vuejs?
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, so dass, wenn es zeigt, will ich es mit diesen Daten beginnen. Wenn der Benutzer aus dem Fenster bricht, möchte ich alle Daten auf diesen zurücksetzen.
Ich weiß, dass ich eine Methode erstellen können die Daten zurückgesetzt und nur manuell alle Daten Eigenschaften wieder an ihren ursprünglichen gesetzt:
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. Es bedeutet, dass wenn ich jemals eine Änderung an den Dateneigenschaften der Komponente vornehmen muss, ich sicherstellen muss, dass ich daran denke, die Struktur der Reset-Methode zu aktualisieren. Das ist nicht absolut schrecklich, da es eine kleine modulare Komponente ist, aber es macht den Optimierungsanteil meines Gehirns zum Schreien.
Die Lösung, die ich dachte, würde wäre arbeiten, um die anfänglichen Dateneigenschaften in einem ready
Methode und verwenden Sie dann zu greifen, die Daten gespeichert, die Komponenten zurück:
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;
}
}
Aber das initialDataConfiguration
Objekt verändert sich zusammen mit der Daten (die unsere initialDataConfiguration
erhalten den Umfang der Datenfunktion sinnvoll, da in dem Leseverfahren macht.
gibt es eine Möglichkeit die anfänglichen Konfigurationsdaten greifen, ohne den Umfang zu erben?
Überlege ich das und es gibt einen besseren/einfacheren Weg dies zu tun?
Ist Hardcoding der Ausgangsdaten die einzige Option?
Verwenden Sie v-show oder v-if, um das Modal anzuzeigen? –
Ich benutze Bootstrap für die CSS, also verwende ich es in Modal, die Jquery für das Anzeigen und Ausblenden nutzt. Also im Wesentlichen ist der Fensterbereich der Komponente immer da, nur versteckt. –