Magento 2: comment détecter le changement d'étape de paiement


9

J'essaie de trouver la meilleure méthode pour détecter un changement d'étape dans le paiement de Magento 2. Par exemple, passer des détails d'expédition au paiement, ou vice versa.

J'ai fait quelques recherches et vendor/magento/module-checkout/view/frontend/web/js/model/step-navigator.jsje peux utiliser ceux next()qui se déclenchent sur le bouton Continuer et ceux navigateTo()qui se déclenchent lorsqu'un utilisateur clique directement sur l'étape de paiement - mais les deux méthodes semblent plutôt hacky, il doit y avoir un moyen plus propre de détecter un changement d'étape quelle que soit la façon dont et quelle étape .

J'espérais une stepChange()fonction ou quelque chose de similaire qui se déclenche chaque fois qu'un changement d'étape de paiement se produit.

Ma question:

Quelle est la meilleure méthode pour déclencher mon JS personnalisé lorsqu'un changement d'étape de paiement se produit?

Réponses:


12

Vous pouvez enregistrer une poignée lorsque le code de hachage change, c'est-à-dire $(window).hashchange(callBack).

C'est ce qui se passe dans Magento_Checkout/view/frontend/web/js/view/progress-bar.js:

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

Cela provoque l' stepNavigator.handleHashexécution de la fonction chaque fois que l'étape change car la modification des étapes à l'aide de nextou navigateTomodifie le hachage de la fenêtre.


Merci Aaron, toutes mes excuses, je n'ai pas donné la totalité de la prime, je ne savais pas qu'il y avait une date limite pour cela.
Ben Crook

0

Bonne question. Je ne sais pas quelle est la meilleure façon (je suis intéressé par d'autres réponses) mais je pense que l'ajout d'un événement personnalisé à la fonction .next()ou .isProcessed()et de lui passer l'étape actuelle pourrait être une assez bonne solution.


1
Je ne pense pas que l'ajouter à la prochaine soit une bonne idée, car cela ne se déclencherait pas lorsque vous reviendriez en arrière
Ben Crook
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.