如何仅在 Odoo 10 中加载视图后 运行 javascript

How to run javascript only after the view has loaded in Odoo 10

我在 https://www.odoo.com/apps/modules/8.0/web_menu_hide_8.0/

上安装了网络隐藏菜单

我修改为在 Odoo 10 上使用它,但是如果我们按下隐藏按钮,表单将调整为全宽,如果我们在按下隐藏按钮后切换到另一个视图,表单页面将保持不变与原件一样(不是全宽)。

所以我需要在页面呈现后在表单视图上调整 class "o_form_sheet"。我可以知道如何使用 javascript 来做到这一点吗?我需要扩展哪个 class 和方法?

我要回答我自己的问题。 经过一些研究,我发现最好的选择是使用 load_views 函数继承 ViewManager 小部件。

var ViewManager = require('web.ViewManager');

ViewManager.include({
    load_views: function (load_fields) {
        var self = this;

        // Check if left menu visible
        var root=self.$el.parents();
        var visible=(root.find('.o_sub_menu').css('display') != 'none')
        if (visible) {
            // Show menu and resize form components to original values
            root.find('.o_form_sheet_bg').css('padding', self.sheetbg_padding);
            root.find('.o_form_sheet').css('max-width', self.sheetbg_maxwidth);
            root.find('.o_form_view div.oe_chatter').css('max-width', self.chatter_maxwidth);
        } else {
            // Hide menu and save original values
            self.sheetbg_padding=root.find('.o_form_sheet_bg').css('padding');
            root.find('.o_form_sheet_bg').css('padding', '16px');
            self.sheetbg_maxwidth=root.find('.o_form_sheet').css('max-width');
            root.find('.o_form_sheet').css('max-width', '100%');
            self.chatter_maxwidth=root.find('.o_form_view div.oe_chatter').css('max-width');
            root.find('.o_form_view div.oe_chatter').css('max-width','100%');
        }

        return this._super.apply(this, arguments, load_fields);
    },
});