Magento 2: चेकआउट स्टेप चेंज का पता कैसे लगाएं


10

मैं Magento 2 के चेकआउट में एक चरण परिवर्तन का पता लगाने की सबसे अच्छी विधि का पता लगाने की कोशिश कर रहा हूं। उदाहरण के लिए शिपिंग विवरण से भुगतान, या इसके विपरीत।

मैंने कुछ खुदाई की है और vendor/magento/module-checkout/view/frontend/web/js/model/step-navigator.jsमैं next()इनका उपयोग कर सकता हूं जो जारी बटन पर आग लगाता है, और navigateTo()जो आग लगाता है जब कोई उपयोगकर्ता सीधे चेकआउट पर क्लिक करता है - लेकिन दोनों विधियां बल्कि हैक होती हैं, एक चरण में बदलाव का पता लगाने के लिए एक क्लीनर तरीका होना चाहिए, चाहे कैसे और जो कदम

मैं एक stepChange()समारोह या कुछ इसी तरह की उम्मीद कर रहा था जब भी कोई चेकआउट कदम परिवर्तन होता है।

मेरा प्रश्न:

चेकआउट चरण परिवर्तन होने पर मेरे कस्टम JS को ट्रिगर करने के लिए सबसे अच्छी विधि क्या है?

जवाबों:


13

जब हैश कोड बदल जाता है, तो आप एक हैंडल रजिस्टर कर सकते हैं $(window).hashchange(callBack)

ऐसा ही होता है Magento_Checkout/view/frontend/web/js/view/progress-bar.js:

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

यह stepNavigator.handleHashफ़ंक्शन का कारण बनता है जब भी चरण बदलता है क्योंकि विंडो के हैश का उपयोग करते हुए nextया बदलते हुए चरण बदलते navigateToहैं।


धन्यवाद हारून, क्षमा याचना मैं पूर्ण इनाम नहीं दिया था मुझे नहीं पता था कि इसके लिए एक समय सीमा थी।
बेन क्रुक

0

अच्छा प्रश्न। मुझे नहीं पता कि सबसे अच्छा तरीका क्या है (मैं अन्य उत्तरों के लिए दिलचस्पी रखता हूं) लेकिन मुझे लगता है कि एक कस्टम घटना .next()या .isProcessed()फ़ंक्शन को जोड़ना और इसे पास करना वर्तमान कदम एक बहुत अच्छा समाधान हो सकता है।


1
मुझे नहीं लगता कि इसे अगले में जोड़ना एक अच्छा विचार है क्योंकि जब आप एक कदम पीछे जाते हैं तो यह आग नहीं
बेन क्रुक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.