Magento 2: Come rilevare la modifica del passaggio di pagamento


9

Sto cercando di capire il metodo migliore per rilevare un cambio di passaggio nel checkout di Magento 2. Ad esempio, passando dai dettagli di spedizione al pagamento o viceversa.

Ho fatto qualche ricerca e vendor/magento/module-checkout/view/frontend/web/js/model/step-navigator.jsposso usare next()quali spari sul pulsante continua e navigateTo()quali spunti quando un utente fa clic direttamente sul checkoutstep - ma entrambi i metodi sembrano piuttosto confusi, ci deve essere un modo più pulito per rilevare un cambio di passo indipendentemente da come e quale passo .

Speravo in una stepChange()funzione o qualcosa di simile che si attiva ogni volta che si verifica una modifica del passaggio di checkout.

La mia domanda:

Qual è il metodo migliore per attivare il mio JS personalizzato quando si verifica una modifica della fase di checkout?

Risposte:


12

È possibile registrare un handle per quando cambia il codice hash, ad es $(window).hashchange(callBack).

Questo è ciò che accade in Magento_Checkout/view/frontend/web/js/view/progress-bar.js:

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

Questo fa sì che la stepNavigator.handleHashfunzione venga eseguita ogni volta che il passaggio cambia perché cambiando i passaggi usando nexto navigateTocambia l'hash della finestra.


Grazie Aaron, mi scuso per non aver dato la piena grazia, non sapevo che ci fosse una scadenza per questo.
Ben Crook,

0

Buona domanda. Non so quale sia il modo migliore (sono interessato ad altre risposte) ma penso che l'aggiunta di un evento personalizzato alla funzione .next()o .isProcessed()e il passaggio ad esso il passaggio corrente potrebbe essere una soluzione abbastanza buona.


1
Non penso che aggiungerlo al prossimo sia una buona idea in quanto non si spegne quando torni indietro di un passo
Ben Crook,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.