无法覆盖 converse.js 核心功能

Can't override converse.js core functions

我在尝试覆盖 converse.js 核心功能时遇到问题。下面这个例子:https://conversejs.org/docs/html/development.html#writing-a-converse-js-plugin and https://conversejs.org/docs/html/quickstart.html。我的代码如下所示:

require(['converse'], function (converse) {
    "use strict";

    converse.plugins.add('pluginName', {
        overrides: {
            onConnected: function () {
                this._super.onConnected();
            },
            ChatBoxView: {                
                showMessage: function (attrs) {                    
                    this._super.showMessage(attrs);
                }
            }
        }
    });

    converse.initialize({
        bosh_service_url: 'http://myurl.com/http-bind/',
        i18n: locales.en,
        show_controlbox_by_default: true,
        roster_groups: true,
        keepalive: true,
        jid: 'admin@myurl.com',
        message_carbons: true,
        play_sounds: true,
        anonymous: false,
        allow_logout: false,
        authentication: 'prebind',
        prebind_url: '/prebind',
        auto_list_rooms: true
    });
});

此代码部分有效。显示聊天,它已连接(this._super.onConnected();工作正常),但是当我想显示消息时出现错误(ChatBoxView.showMessage 函数)。错误信息是:TypeError: this.$content is undefined.

如何"define"ChatBoxView这个方法?

问题很可能是super函数中的the变量绑定到错误的上下文

您可以通过将 this._super.showMessage(attrs); 更改为 this._super.showMessage.apply(this, arguments); 来解决该问题。

这将使用正确的 this 参数和传递给覆盖函数的所有参数调用函数。

在旁注中,我将更新文档以反映这一点。