You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Magento 2:如何在订单摘要块加载/重载后执行自定义JavaScript

实现订单摘要块加载/重载时执行自定义JS的方案

不用直接重写get-totals.js,确实可以通过事件订阅或更优雅的扩展方式实现需求,以下是几种靠谱的方案:

1. 订阅Magento内置事件

Magento在订单摘要更新(包括初始加载和AJAX重载)时会触发特定事件,你可以直接监听这些事件来执行自定义逻辑:

  • 监听总计更新事件:
$(document).on('checkout:updateTotals', function() {
    // 这里写你要执行的代码,比如更新自定义字段、调整样式等
    console.log('订单摘要已更新');
});
  • 如果是购物车页面的订单摘要,还可以监听cart:update事件:
$(document).on('cart:update', function(event, data) {
    // data里包含更新相关的信息,可按需使用
    console.log('购物车订单摘要已刷新');
});

2. 监听DOM变化(MutationObserver)

如果找不到合适的内置事件,用MutationObserver监听订单摘要容器的DOM变化,只要容器内的内容被加载或修改,就触发你的逻辑:

// 选择订单摘要的容器元素,替换成你实际的选择器
const summaryContainer = document.querySelector('.order-summary');

// 创建观察者实例
const observer = new MutationObserver(function(mutations) {
    mutations.forEach(function(mutation) {
        // 仅当内容有新增/删除时执行逻辑(避免无意义触发)
        if (mutation.addedNodes.length || mutation.removedNodes.length) {
            console.log('订单摘要DOM已更新');
            // 你的自定义代码
        }
    });
});

// 配置观察选项
const config = { childList: true, subtree: true };

// 开始观察目标元素
observer.observe(summaryContainer, config);

3. 用Mixins扩展get-totals.js(推荐)

如果以上两种方案都不满足,也不用完全重写get-totals.js,可以用Magento的mixins机制扩展它的核心方法,在原逻辑执行前后插入你的代码:

  1. 创建自定义mixins文件(比如app/code/YourVendor/YourModule/view/frontend/web/js/mixins/get-totals-mixin.js):
define([], function() {
    'use strict';

    return function(target) {
        return target.extend({
            refresh: function() {
                // 先执行原方法的逻辑
                this._super();
                // 插入你的自定义代码
                console.log('订单摘要已完成刷新');
            }
        });
    };
});
  1. 在requirejs-config.js中注册mixins:
var config = {
    config: {
        mixins: {
            'Magento_Checkout/js/view/summary/get-totals': {
                'YourVendor_YourModule/js/mixins/get-totals-mixin': true
            }
        }
    }
};

内容的提问来源于stack exchange,提问作者Shaun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 10:07:08