Search code examples
javascriptodooodoo-13

extend Widget's init method in odoo 13


I'm trying to extend the widget's init method to make a simple console.log when the page is loaded, but it doesn't work, what can be a correct way to do this?

odoo.define('lliege_pdt_main.pdt_maps', function (require) {
    var Widget = require('web.Widget');

    var pdt_maps = Widget.extend({
        init: function (parent) {
            console.log("test");
            this._super(parent);
        },
    });
    return pdt_maps;
});

Solution

  • In your case you do not want to inherit the widget in the classical sense. You want to modify the parent itself. This can be done with include instead of extend:

    var pdt_maps = Widget.include({
            init: function (parent) {
                console.log("test");
                this._super(parent);
            },
    });
    

    Don't forget to debug in assets debug (gorilla) mode. Here is the official documentation on patching a JS class like this.