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?

Ben Crook
fonte

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.

Aaron Allen
fonte
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.

nuovecode
fonte
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