¿Cuál es la diferencia entre "descartar" un modal y "cerrar" un modal?
close(result) - a method that can be used to close a modal, passing a result
dismiss(reason) - a method that can be used to dismiss a modal, passing a reason
¿Cuál es la diferencia entre "descartar" un modal y "cerrar" un modal?
close(result) - a method that can be used to close a modal, passing a result
dismiss(reason) - a method that can be used to dismiss a modal, passing a reason
La respuesta está en la documentación, justo después de las dos líneas que citó:
El método abierto devuelve una instancia modal, un objeto con las siguientes propiedades:
- close (resultado): un método que se puede usar para cerrar un modal, pasando un resultado
- despedir (motivo): un método que se puede utilizar para descartar un modal, pasando un motivo
- resultado: una promesa que se resuelve cuando se cierra un modal y se rechaza cuando se descarta un modal
Lo importante aquí es lo que sucede con la promesa. Al cierre, la promesa se resuelve, esencialmente, la devolución de llamada de "éxito" se activa. Al descartar, la promesa se rechaza y, por lo tanto, se ejecuta la devolución de llamada de "falla".
Descubrí que es mejor descartar un modal si es de un usuario que cierra el modal (por ejemplo, regresa al estado detrás del modal e invoca state.go ('^')), y se usa el cierre del modal al cambiar de estado a través de $ state.go o ui-sref.
De esa manera, puede usar la
result
promesa para hacer diferentes cosas, dependiendo de lo que suceda.result.then(function() { /* state change via ui-sref */ })
result.catch(function() { /* user closed modal */ })
fuente
ui-router
, lo cual no siempre es el caso (ni la pregunta lo incluye).