La razón por la que resetFields restablece el valor inicial no tiene efecto

pregunta

Cuando trabajo en un proyecto recientemente, generalmente agrego resetFields en el cierre de devolución de llamada del componente de diálogo para restablecer el valor inicial y verificar

No hay problema en otros lugares.Hay un problema en el componente de la tabla.Más tarde, después de monitorear las herramientas de vue y ver resetFields, formData no ha cambiado, y finalmente encontré la razón.


resolver

1. Utilice el cuadro de diálogo para [Agregar] y [Modificar] datos.
2. Haga clic en [Modificar] primero y aparecerá una ventana emergente. En este momento, se ha asignado un valor a la forma de la ventana emergente. 3.
Luego haga clic en el botón Agregar y luego llame al método resetFields() No hay forma de borrar el formulario

Si solo escribes directamentethis.$refs.formRef.resetFields()

Debido a que la operación de edición tiene eco de datos, el eco de datos se representa en la etapa montada,

Y resetFields es restablecer el formulario de formulario al valor inicial, y este valor inicial es el valor después de que se monta el formulario de formulario

Como resultado, la validación solo se puede borrar y el formulario no se puede restablecer al valor inicial que queremos

tan directamentethis.$data.roleFrom=JSON.parse(JSON.stringify(this.$options.data().roleFrom))

RoleForm de copia profunda ¡sí! Listo

c607595b796bc6fbce3be172ec89530b.png


extendido

 ¿Por qué no hay problema con mis otras páginas? Más tarde fui a ver por qué el eco de datos del diálogo de otros componentes no es problema, porque usé watch para realizar el renderizado de acuerdo con el cambio de id en otros componentes, y cada vez que el devolución de llamada de cierre de diálogo, borraré activamente la identificación a una cadena vacía, exactamente si la identificación de la interfaz es una cadena vacía, la solicitud también se enviará y los datos obtenidos no corresponden al valor repetido, por lo que está vacío. En esencia, la solicitud se reenvía, pero es precisamente porque los datos no corresponden con la pantalla, lo que provoca que la apariencia correcta de los datos esté vacía durante la operación de agregar.

 En términos generales, todavía no es riguroso. Quiero modificar el código aquí. Agregar un si aquí significa que se restablecerá cada vez que se cierre, pero no es necesario restablecerlo cuando se abre.

① Ver subcomponente si newVal===" " El método de reinicio de formulario anterior (aquí agregué deliberadamente un espacio para que la cadena vacía se vea claramente, el reinicio real no necesita agregar un espacio)

② Agregue un isEdit=false al cuadro de diálogo Cerrar devolución de llamada del componente principal para evitar el envío repetido de ajax cuando la identificación del reloj del componente secundario cambia a un carácter vacío

añadir un suplemento

Otro punto es que si usa ajax para obtener datos cada vez, también obtendrá un nuevo objeto de dirección.Esto es solo porque algunos de mis datos usan datos de referencia que ya existen localmente, entonces esto sucede, por lo que todos usan referencias. atención a los datos Si encuentra una relación y afecta el negocio, haga una copia profunda de la misma.

Supongo que te gusta

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