javascript - Odoo-12:我创建了一个小部件。我如何使用它?

标签 javascript odoo odoo-12

我创建了一个定义小部件的自定义模块。这是 .js 文件以及 QWeb 模板:

bh_sidebar.js

odoo.define('sidebar_widget.bh_sidebar', function (require) {
    'use strict';
    var Widget = require('web.Widget');
    var widgetRegistry = require('web.widget_registry');
    var core = require('web.core');

    var QWeb = core.qweb;
    var _t = core._t;

    var bh_sidebar = Widget.extend({
        init: function () {
            var self = this;
            this._super(parent);
            console.log('Widget initialized!');
        },

        events: {},

        start: function () {
            this.$el.append(QWeb.render('bh_sidebar_template'));
            console.log('Widget started!');
        }

    });

    widgetRegistry.add(
        'bh_sidebar', bh_sidebar
    )
})

bh_sidebar.xml
<?xml version="1.0"?>
<templates id="template" xml:space="preserve">
    <t t-name="bh_sidebar_template">
        <div style="background-color:red;" class="myClass">
            <a href="#" class="butt1">Button 1</a>
            <a href="#" class="butt2">Button 2</a>
        </div>
    </t>
</templates> 

我已使用以下方法将两者都添加到后端 Assets 中:
<odoo>
    <data>
        <template id="assets_backend" inherit_id="web.assets_backend">
            <xpath expr="script[last()]" position="after">
                <script type="text/javascript" src="/sidebar_widget/static/src/js/bh_sidebar.js"></script>
                <!-- <script type="text/javascript" src="/sidebar_widget/static/src/js/renderer.js"></script> -->
                <link rel="stylesheet" type="text/scss" href="/sidebar_widget/static/src/scss/widget.scss"></link>
            </xpath>
        </template>
    </data>
</odoo>

我还将模板添加到 list 文件中。

这个小部件应该显示一个带有两个链接的红色矩形,按钮 1 和按钮 2。我希望这个小部件独立于任何类型的 View ,并且只显示在 Odoo 导航栏下方的屏幕顶部。我怎么办?如果我尝试按原样运行我的代码,则没有任何 react 。我已经在这一个星期了。我在互联网上找到的没有任何帮助。文件已经过时,资源稀缺。

我将不胜感激任何帮助。
谢谢你。

最佳答案

您的小部件不会被实例化并自动插入到 DOM 中。为此,您可以连接到任何现有的高级小部件。例如,使用 show_application WebClient 上的方法:

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

WebClient.include({

    show_application: function () {
        var sup = this._super.apply(this, arguments);

        // Instantiate
        var sidebar = new bh_sidebar();

        // Insert in DOM
        sidebar.insertAfter(this.$('.o_main'));

        return sup;
    },

});

关于javascript - Odoo-12:我创建了一个小部件。我如何使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54412424/

相关文章:

javascript - 需要显示for循环数组中的所有数字

javascript - 如何使用对象的键对对象数组进行排序?

python - 如何将 one2many 下拉数据的值绑定(bind)到 odoo 12 中的列字段?

python - 更新从公共(public)到用户的 Odoo 网站路由时出现内部错误

odoo - 如何修复 ValueError : Expected singleton sale. order(41,...)

javascript - React JS获取数组中数字的总和

javascript - Greensock 动画不适用于 SVG 高度

javascript - 在 TreeView Odoo 中单击时禁用日期选择器

python - 如何通过代码将用户明智的销售订单与网站菜单链接起来

postgresql - Odoo 10 - 取消的选股无法删除,为什么?