无法覆盖 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
参数和传递给覆盖函数的所有参数调用函数。
在旁注中,我将更新文档以反映这一点。
我在尝试覆盖 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
参数和传递给覆盖函数的所有参数调用函数。
在旁注中,我将更新文档以反映这一点。