2017-10-20 9 views
0

Je veux ajouter un nouvel événement au widget "mail.Chatter" (mail/statique/src/js/chatter.js) dans Odoo 10.so je veux étendre le widget "mail.Chatter".Comment étendre le widget mail.Chatter en Javascript Odoo 10

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

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

console.log('Chatter', Chatter) 



}); 

Mais à partir de la console, j'ai eu une erreur. S'il vous plaît vérifier ci-dessous. S'il vous plaît corrigez-moi si je me trompe.Y a-t-il une autre méthode pour étendre ce widget "mail.Chatter"?

+0

essayer Chatter.extend seulement. car Chatter renvoie uniquement l'objet de discussion –

+0

@Burmesepythis console.log ('Chatter', Chatter). J'obtiens une erreur lors de la console de la variable Chatter – robinjoseph90

Répondre

1

Cela fonctionne pour moi

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); 

    }, 

}); 
0

Dans le fichier JS chatter.js, vous avez 2 fonctions d'initialisation.

Pour 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', 
    }); 
}, 

Et pour 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(); 
}, 

Et si je voir votre code. Vous essayez d'écraser l'init de Chatter avec les paramètres init de ChatterComposer.

+0

var Chatter = require ('mail.Chatter'); console.log ('Chatter', Chatter) Je console le "Chatter". ici je reçois cette erreur "Chatter fonction Class() {if (this.constructor! == OdooClass) {throw new Error (" Vous ne pouvez instancier des objets avec le 'nouvel' opérateur ");}" son rien à faire avec "init" function.je pense. @ jo541 – robinjoseph90

+0

Ce message est normalement. Vous essayez d'appeler la classe non initialisée. – jo541

+0

var Chatter = require ('mail.Chatter'); console.log ('Chatter', Chatter.Chatter). Obtenir "indéfini" dans la console. semble que Chatter ne peut pas être étendu ?? – robinjoseph90