Magento 2: Cómo detectar el cambio del paso de pago

9

Estoy tratando de descubrir el mejor método para detectar un cambio de paso en la comprobación de Magento 2. Por ejemplo, pasar de los detalles de envío al pago, o viceversa.

He cavado un poco y vendor/magento/module-checkout/view/frontend/web/js/model/step-navigator.jspuedo usar next()qué disparos en el botón Continuar y navigateTo()qué disparos cuando un usuario hace clic en el paso de pago directamente, pero ambos métodos parecen bastante extravagantes, debe haber una forma más limpia de detectar un cambio de paso, independientemente de cómo y que paso .

Esperaba una stepChange()función o algo similar que se active cada vez que ocurre un cambio de paso de pago.

Mi pregunta:

¿Cuál es el mejor método para activar mi JS personalizado cuando se produce un cambio de paso de pago?

Ben Crook
fuente

Respuestas:

12

Puede registrar un identificador para cuando cambie el código hash, es decir $(window).hashchange(callBack).

Esto es lo que sucede en Magento_Checkout/view/frontend/web/js/view/progress-bar.js:

$(window).hashchange(_.bind(stepNavigator.handleHash, stepNavigator));

Esto hace que la stepNavigator.handleHashfunción se ejecute cada vez que cambia el paso porque al cambiar los pasos usando nexto navigateTocambia el hash de la ventana.

Aaron Allen
fuente
Gracias Aaron, disculpas por no dar la recompensa completa, no sabía que había una fecha límite para ello.
Ben Crook
0

Buena pregunta. No sé cuál es la mejor manera (estoy interesado en otras respuestas), pero creo que agregar un evento personalizado a la función .next()o .isProcessed()y pasarle el paso actual podría ser una solución bastante buena.

nuovecode
fuente
1
No creo que agregarlo al siguiente sea una buena idea, ya que no se dispararía cuando retrocedas un paso
Ben Crook