Magento 2:如何检测结帐步骤更改


9

我正在尝试找出检测Magento 2结帐中步骤变化的最佳方法。例如,从发货详细信息到付款,反之亦然。

我已经做了一些挖掘工作,并且vendor/magento/module-checkout/view/frontend/web/js/model/step-navigator.js可以使用next()哪种在继续按钮navigateTo()上触发,以及在用户直接单击checkoutstep时哪种触发-但是两种方法似乎都比较笨拙,无论如何如何,都必须有一种更干净的方法来检测步骤更改以及哪一步

我希望stepChange()每当结帐步骤发生更改时就会触发的功能或类似功能。

我的问题:

发生结帐步骤更改时,触发我的自定义JS的最佳方法是什么?

Answers:


12

您可以为哈希码更改时注册一个句柄,即$(window).hashchange(callBack)

这是发生在Magento_Checkout/view/frontend/web/js/view/progress-bar.js

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

这会导致stepNavigator.handleHash函数在步骤更改时执行,因为使用nextnavigateTo更改窗口的哈希值更改了步骤。


谢谢亚伦,很抱歉我没有给予全部赏金,我不知道有没有截止日期。
本·克鲁克

0

好问题。我不知道什么是最好的方法(我对其他答案也很感兴趣),但是我认为将自定义事件添加到.next().isProcessed()函数并将其传递给当前步骤可能是一个很好的解决方案。


1
我认为将其添加到下一个不是一个好主意,因为当您退后一步时它不会触发
Ben Crook
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.