Magento 2: Como detectar alterações na etapa do checkout


9

Estou tentando descobrir o melhor método para detectar uma mudança de etapa no checkout do Magento 2. Por exemplo, passando de detalhes de remessa para pagamento ou vice-versa.

Eu fiz algumas escavações e vendor/magento/module-checkout/view/frontend/web/js/model/step-navigator.jsposso usar next()quais acionamentos no botão continuar e navigateTo()quais acionamentos quando um usuário clica diretamente na saída - mas ambos os métodos parecem bastante invasivos, deve haver uma maneira mais limpa de detectar uma alteração de etapa, independentemente de como e qual passo .

Eu estava esperando por uma stepChange()função ou algo semelhante que seja acionado sempre que uma alteração na etapa de pagamento ocorrer.

Minha pergunta:

Qual é o melhor método para acionar meu JS personalizado quando ocorre uma alteração na etapa de checkout?

Respostas:


12

Você pode registrar um identificador para quando o código hash for alterado, ou seja $(window).hashchange(callBack).

É o que acontece em Magento_Checkout/view/frontend/web/js/view/progress-bar.js:

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

Isso faz com que a stepNavigator.handleHashfunção seja executada sempre que a etapa for alterada, pois alterar as etapas usando nextou navigateToaltera o hash da janela.


Obrigado Aaron, desculpas por não ter dado a recompensa completa. Não sabia que havia um prazo para isso.
Ben Crook

0

Boa pergunta. Não sei qual é a melhor maneira (estou interessado em outras respostas), mas acho que adicionar um evento personalizado à função .next()ou .isProcessed()e passá-lo para a etapa atual pode ser uma solução muito boa.


11
Eu não acho que adicioná-lo ao próximo é uma boa idéia, então seria não fogo quando você vai para trás um passo
Ben Crook
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.