Magento 2: Cara Mendeteksi Perubahan Langkah Checkout

9

Saya mencoba mencari metode terbaik untuk mendeteksi perubahan langkah dalam checkout Magento 2. Misalnya beralih dari detail pengiriman ke pembayaran, atau sebaliknya.

Saya telah melakukan beberapa penggalian dan vendor/magento/module-checkout/view/frontend/web/js/model/step-navigator.jssaya dapat menggunakan next()yang mana yang menyala pada tombol lanjutkan, dan navigateTo()yang mana yang menyala ketika pengguna mengklik checkoutstep secara langsung - tetapi kedua metode ini tampak agak kabur, harus ada cara yang lebih bersih untuk mendeteksi perubahan langkah terlepas dari bagaimana dan langkah mana .

Saya berharap untuk stepChange()fungsi atau sesuatu yang serupa yang menyala setiap kali perubahan langkah checkout terjadi.

Pertanyaan saya:

Apa metode terbaik untuk memicu JS kustom saya ketika perubahan langkah checkout terjadi?

Ben Crook
sumber

Jawaban:

12

Anda bisa mendaftarkan pegangan ketika kode hash berubah, yaitu $(window).hashchange(callBack).

Inilah yang terjadi di Magento_Checkout/view/frontend/web/js/view/progress-bar.js:

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

Ini menyebabkan stepNavigator.handleHashfungsi untuk dieksekusi setiap kali langkah berubah karena mengubah langkah menggunakan nextatau navigateTomengubah hash jendela.

Aaron Allen
sumber
Terima kasih Aaron, permintaan maaf saya tidak memberikan hadiah penuh saya tidak menyadari ada batas waktu untuk itu.
Ben Crook
0

Pertanyaan bagus. Saya tidak tahu apa cara terbaik (saya tertarik dengan jawaban lain) tetapi saya pikir menambahkan acara khusus ke .next()atau .isProcessed()fungsi dan meneruskannya langkah saat ini bisa menjadi solusi yang cukup bagus.

nuovecode
sumber
1
Saya tidak berpikir menambahkannya ke yang berikutnya adalah ide yang bagus karena itu tidak akan menyala ketika Anda mundur selangkah
Ben Crook