我在付款方式后的结帐步骤2中添加了自定义组件,该组件是一个摘要,取决于在第一步中所做的选择。 问题是该组件的html仅在首次访问结帐页面时才通过XHR加载,并且在单击“下一步”后不会重新加载。 如何才能仅在步骤2上加载组件?
这是自定义布局checkout_index_index.xml:
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="navigation.sections" remove="true" />
<referenceBlock name="topsearch" remove="true" />
<referenceBlock name="minicart" remove="true" />
<referenceBlock name="checkout.root">
<arguments>
<argument name="jsLayout" xsi:type="array">
<item name="components" xsi:type="array">
<item name="checkout" xsi:type="array">
<item name="children" xsi:type="array">
<item name="sidebar" xsi:type="array">
<item name="config" xsi:type="array">
<item name="componentDisabled" xsi:type="boolean">true</item>
</item>
</item>
<item name="steps" xsi:type="array">
<item name="children" xsi:type="array">
<item name="billing-step" xsi:type="array">
<item name="children" xsi:type="array">
<item name="payment" xsi:type="array">
<item name="children" xsi:type="array">
<item name="afterMethods" xsi:type="array">
<item name="children" xsi:type="array">
<item name="giftCardAccount" xsi:type="array">
<item name="config" xsi:type="array">
<item name="componentDisabled" xsi:type="boolean">true</item>
</item>
</item>
<item name="discount" xsi:type="array">
<item name="config" xsi:type="array">
<item name="componentDisabled" xsi:type="boolean">true</item>
</item>
</item>
<item name="offerSummary" xsi:type="array">
<item name="component" xsi:type="string">Custom_Order/js/view/payment/offersummary</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</argument>
</arguments>
</referenceBlock>
</body>
</page>
我的js组件是:
define([
'jquery',
'ko',
'uiComponent',
'Magento_Checkout/js/model/quote'
], function ($, ko, Component, quote) {
'use strict';
var quoteItemData = window.checkoutConfig.checkoutSummary,
totals = window.checkoutConfig.checkoutTotals,
grandTotal = window.checkoutConfig.OrderGrandTotal,
isApplied;
isApplied = true;
return Component.extend({
defaults: {
template: 'Custom_Order/payment/offersummary'
},
getItems: function () {
return quoteItemData;
},
slideTable: function (item) {
jQuery('.shop-item-'+item.shop_id).slideToggle(400);
jQuery('.shop-head-'+item.shop_id).toggleClass('open');
},
getTotals: function() {
return totals;
},
getGrandTotal: function() {
return grandTotal;
},
/**
* Applied flag
*/
isApplied: isApplied,
});
});