如何在Javascript Odoo 10

时间:2017-10-20 06:04:40

标签: javascript openerp odoo-10

我想在" mail.Chatter"中添加一个新事件。在Odoo 10中的小部件(mail / static / src / js / chatter.js)。我想扩展" mail.Chatter"窗口小部件。

odoo.define('override_chatter.override_chatter', function (require) {
"use strict";

var Chatter = require('mail.Chatter');

console.log('Chatter', Chatter)



});

但是从控制台来看,我遇到了一些错误。请查看以下内容。

Chatter function Class(){if(this.constructor!==OdooClass){throw new Error("You can only instanciate objects with the 'new' operator");}

如果我错了,请纠正我。还有其他方法可以扩展这个" mail.Chatter"插件?

2 个答案:

答案 0 :(得分:1)

这对我有用

odoo.define('override_chatter.override_chatter', function (require) {
"use strict";

var core = require('web.core');
var Chatter = require('mail.Chatter');
var MailThread = core.form_widget_registry.get('mail_thread');

var MailThreadOverride = MailThread.include({

    init: function () {
    this._super.apply(this, arguments);

    },

});

答案 1 :(得分:0)

在JS chatter.js文件中你有2个init函数。

对于ChatterComposer

init: function (parent, dataset, options) {
    this._super(parent, options);
    this.thread_dataset = dataset;
    this.suggested_partners = [];
    this.options = _.defaults(this.options, {
        display_mode: 'textarea',
        record_name: false,
        is_log: false,
    });
    if (this.options.is_log) {
        this.options.send_text = _t('Log');
    }
    this.events = _.extend(this.events, {
        'click .o_composer_button_full_composer': 'on_open_full_composer',
    });
},

对于Chatter

init: function () {
    this._super.apply(this, arguments);
    this.model = this.view.dataset.model;
    this.res_id = undefined;
    this.context = this.options.context || {};
    this.dp = new web_utils.DropPrevious();
},

如果我看到你的代码。您尝试在ChatterComposer的init参数中覆盖Chatter的init。