Existe uma maneira adequada de redefinir os dados iniciais de um componente no vuejs?
Eu tenho um componente com um conjunto específico de dados iniciais:
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
}
}
São dados para uma janela modal, portanto, quando mostra que quero começar com esses dados. Se o usuário cancelar da janela, desejo redefinir todos os dados para isso.
Eu sei que posso criar um método para redefinir os dados e apenas definir manualmente todas as propriedades dos dados de volta ao seu original:
reset: function (){
this.modalBodyDisplay = 'getUserInput';
this.submitButtonText = 'Lookup';
this.addressToConfirm = null;
this.bestViewedByTheseBounds = null;
this.location = {
name: null,
address: null,
position: null
};
}
Mas isso parece realmente desleixado. Isso significa que, se alguma vez eu fizer uma alteração nas propriedades de dados do componente, precisará me lembrar de atualizar a estrutura do método reset. Isso não é absolutamente horrível, pois é um pequeno componente modular, mas faz a parte de otimização do meu cérebro gritar.
A solução que eu pensei que funcionaria seria pegar as propriedades iniciais dos dados em umready
método e, em seguida, use os dados salvos para redefinir os 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;
}
}
Mas oinitialDataConfiguration
O objeto está mudando junto com os dados (o que faz sentido, porque no método de leitura, nossoinitialDataConfiguration
está obtendo o escopo da função de dados.
Existe uma maneira de capturar os dados de configuração inicial sem herdar o escopo?
Estou pensando demais e há uma maneira melhor / mais fácil de fazer isso?
A codificação permanente dos dados iniciais é a única opção?