Magento 2: Jak wykryć zmianę kroku kasy

10

Próbuję znaleźć najlepszą metodę wykrywania skokowej zmiany w kasie Magento 2. Na przykład przejście od szczegółów wysyłki do płatności lub odwrotnie.

Zrobiłem trochę kopania i vendor/magento/module-checkout/view/frontend/web/js/model/step-navigator.jsmogę użyć, next()który odpala przycisk Kontynuuj, a navigateTo()który uruchamia się, gdy użytkownik kliknie krok kasowania bezpośrednio - ale obie metody wydają się dość pospieszne, musi istnieć czystszy sposób na wykrycie zmiany kroku, niezależnie od tego, jak i który krok .

Miałem nadzieję na stepChange()funkcję lub coś podobnego, który zadziała za każdym razem, gdy nastąpi zmiana kroku kasy.

Moje pytanie:

Jaka jest najlepsza metoda wyzwalania mojego niestandardowego JS, gdy nastąpi zmiana kroku kasy?

Ben Crook
źródło

Odpowiedzi:

13

Możesz zarejestrować uchwyt do zmiany kodu skrótu, tj $(window).hashchange(callBack).

Tak dzieje się w Magento_Checkout/view/frontend/web/js/view/progress-bar.js:

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

Powoduje to, że stepNavigator.handleHashfunkcja jest wykonywana za każdym razem, gdy zmienia się krok, ponieważ zmiana kroków przy użyciu nextlub navigateTozmiana skrótu okna.

Aaron Allen
źródło
Dzięki Aaron, przepraszam, że nie dałem całej nagrody, nie wiedziałem, że był na to termin.
Ben Crook,
0

Dobre pytanie. Nie wiem, co jest najlepszym sposobem (jestem zainteresowany innymi odpowiedziami), ale myślę, że dodanie niestandardowego zdarzenia do .next()lub .isProcessed()funkcji i przekazanie do niej bieżącego kroku może być całkiem dobrym rozwiązaniem.

nowy kod
źródło
1
Nie sądzę, aby dodanie go do następnego było dobrym pomysłem, ponieważ wtedy nie strzeliłby, gdy cofniesz się o krok
Ben Crook