O motivo pelo qual resetFields redefine o valor inicial não entra em vigor

pergunta

Ao trabalhar em um projeto recentemente, geralmente adiciono um resetFields no callback do componente de diálogo próximo para redefinir o valor inicial e verificar

Não há nenhum problema em outros lugares. Há um problema no componente da tabela. Posteriormente, após monitorar as ferramentas vue e visualizar resetFields, o formData não foi alterado e, finalmente, encontrei o motivo.


resolver

1. Use a caixa de diálogo para [Adicionar] e [Modificar] dados.
2. Clique em [Modificar] primeiro e uma janela pop-up aparecerá. Neste momento, o formulário da janela pop-up recebeu um valor 3.
Em seguida, clique no botão Adicionar e chame o método resetFields() Não há como limpar o formulário

Se você apenas escrever diretamentethis.$refs.formRef.resetFields()

Como a operação de edição tem eco de dados, o eco de dados é renderizado no palco montado,

E resetFields é redefinir o formulário do formulário para o valor inicial, e esse valor inicial é o valor após o formulário do formulário ser montado

Como resultado, a validação só pode ser limpa e o formulário não pode ser redefinido para o valor inicial que queremos

tão diretamentethis.$data.roleFrom=JSON.parse(JSON.stringify(this.$options.data().roleFrom))

Função de cópia profundaForm sim! Concluído

c607595b796bc6fbce3be172ec89530b.png


estendido

 Por que não há problema com minhas outras páginas? Depois fui ver porque o eco de dados da caixa de diálogo de outros componentes não é problema, porque usei watch para executar a renderização de acordo com a mudança de id em outros componentes, e toda vez que o dialog close callback, irei limpar ativamente o id para Empty string, exatamente se o id da interface for uma string vazia, a requisição também será enviada, e os dados obtidos não correspondem ao valor ecoado, então está vazio. Em essência, a requisição é reenviada, mas é justamente porque os dados não correspondem ao display, que faz com que apareça corretamente os dados estando vazios durante a operação de adição.

 De um modo geral ainda não é rigoroso, quero modificar o código aqui, adicionar um if aqui significa que ele será zerado toda vez que for fechado, mas não precisa ser zerado quando for aberto.

① Subcomponent watch if newVal===" " O método de redefinição do formulário acima (aqui adicionei deliberadamente um espaço para a string vazia ver claramente, a redefinição real não precisa adicionar um espaço)

② Adicione um isEdit=false ao retorno de chamada do componente pai para evitar o envio repetido de ajax quando o watch id do componente filho mudar para um caractere vazio

adicionar um suplemento

Outro ponto é que se você usar ajax para obter dados todas as vezes, também obterá um novo objeto de endereço. Isso só porque alguns dos meus dados usam dados de referência que já existem localmente, então isso acontece, então todos usam referências Você deve pagar atenção aos dados.Se você encontrar um relacionamento e afetar o negócio, faça uma cópia profunda dele.

Acho que você gosta

Origin blog.csdn.net/qq_59650449/article/details/128493928
Recomendado
Clasificación