Mam element z określonego zestawu danych wywoławcza:Czy istnieje właściwy sposób resetowania początkowych danych komponentu w 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
}
}
to dane dla modalnego okna, więc kiedy to pokazuje chcę go uruchomić z tymi danymi. Jeśli użytkownik anuluje okno, chcę zresetować wszystkie dane do tego.
wiem, że mogę stworzyć metodę, ażeby dane i tylko ręcznie ustawić wszystkie właściwości danych z powrotem do ich pierwotnego:
reset: function(){
this.modalBodyDisplay = 'getUserInput';
this.submitButtonText = 'Lookup';
this.addressToConfirm = null;
this.bestViewedByTheseBounds = null;
this.location = {
name: null,
address: null,
position: null
};
}
Ale to wydaje się bardzo zaniedbany. Oznacza to, że jeśli kiedykolwiek dokonam zmiany we właściwościach danych składnika, będę musiał upewnić się, że pamiętam aktualizację struktury metody resetowania. To nie jest absolutnie straszne, ponieważ jest to mały modułowy komponent, ale powoduje, że część optymalizacyjna mojego mózgu krzyczy.
Rozwiązanie, które myślałem, że pracować będzie chwycić pierwotnych właściwości danych w ready
metody, a następnie wykorzystanie zapisanych danych, aby zresetować składniki:
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;
}
}
ale obiekt initialDataConfiguration
zmienia się wraz z dane (co ma sens, ponieważ w metodzie read our initialDataConfiguration
jest coraz zakres funkcji danych.
Czy istnieje sposób chwytając początkowych danych konfiguracyjnych bez dziedziczenie zakresu?
Czy przemyśliłem to i czy jest lepszy/łatwiejszy sposób na zrobienie tego?
Czy twarde kodowanie danych początkowych jest jedyną opcją?
Czy używasz v-show lub v-if do wyświetlenia modalu? –
Używam bootstrap dla css, więc używam jego wbudowanego modala, który wykorzystuje jquery do pokazywania i ukrywania. Zasadniczo część okna komponentu jest zawsze tam, po prostu ukryta. –