Magento 2: Erkennen von Checkout-Schrittänderungen

9

Ich versuche herauszufinden, wie eine Schrittänderung in der Kaufabwicklung von Magento 2 am besten erkannt werden kann. Zum Beispiel von den Versanddetails zur Zahlung oder umgekehrt.

Ich habe ein bisschen gegraben und vendor/magento/module-checkout/view/frontend/web/js/model/step-navigator.jskann verwenden, next()welche Brände auf der Schaltfläche "Weiter" ausgelöst werden und navigateTo()welche ausgelöst werden, wenn ein Benutzer direkt auf den Checkout-Schritt klickt. Beide Methoden scheinen jedoch ziemlich hackig zu sein. Es muss eine sauberere Methode geben, um eine Schrittänderung zu erkennen, unabhängig davon, wie und welcher Schritt .

Ich hatte auf eine stepChange()Funktion oder ähnliches gehofft, die bei jeder Änderung des Checkout-Schritts ausgelöst wird.

Meine Frage:

Was ist die beste Methode, um mein benutzerdefiniertes JS auszulösen, wenn ein Checkout-Schritt geändert wird?

Ben Crook
quelle

Antworten:

12

Sie können ein Handle registrieren, wenn sich der Hash-Code ändert, z $(window).hashchange(callBack).

Dies ist, was passiert in Magento_Checkout/view/frontend/web/js/view/progress-bar.js:

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

Dadurch wird die stepNavigator.handleHashFunktion ausgeführt, wenn sich der Schritt ändert, da durch Ändern von Schritten der Hash des Fensters geändert nextoder navigateTogeändert wird.

Aaron Allen
quelle
Danke Aaron, Entschuldigung, ich habe nicht das volle Kopfgeld gegeben. Ich wusste nicht, dass es eine Frist dafür gibt.
Ben Crook
0

Gute Frage. Ich weiß nicht, was der beste Weg ist (ich bin an anderen Antworten interessiert), aber ich denke, dass das Hinzufügen eines benutzerdefinierten Ereignisses zur .next()oder .isProcessed()Funktion und das Übergeben des aktuellen Schritts eine ziemlich gute Lösung sein könnte.

Nuovecode
quelle
1
Ich denke nicht, dass es eine gute Idee ist, es dem nächsten hinzuzufügen, da es dann nicht
Ben Crook