Javascript 我创建了一个小部件。我如何使用它?
我创建了一个自定义模块来定义一个小部件。以下是.js文件和QWeb模板: bh_sidebar.js bh_sidebar.xmlJavascript 我创建了一个小部件。我如何使用它?,javascript,odoo,odoo-12,Javascript,Odoo,Odoo 12,我创建了一个自定义模块来定义一个小部件。以下是.js文件和QWeb模板: bh_sidebar.js bh_sidebar.xml 我已使用以下方法将这两个添加到后端资产: <odoo> <data> <template id="assets_backend" inherit_id="web.assets_backend"> <xpath expr="script[last()]" position="
我已使用以下方法将这两个添加到后端资产:
<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>
我还将模板添加到清单文件中
这个小部件应该显示一个带有两个链接的红色矩形,按钮1和按钮2。我希望这个小部件独立于任何类型的视图,并且只显示在Odoo导航栏下方的屏幕顶部。我该怎么做?如果我尝试按原样运行代码,则什么也不会发生。我已经干了一个星期了。我在网上找不到任何帮助。这些文件在刑事上已经过时,资源匮乏
我将感谢任何帮助。
谢谢。我认为您应该使用控制器机制呈现此视图,这将使此视图独立于其他视图。您的小部件不会被实例化并自动插入DOM。要做到这一点,您可以连接到任何已经存在的高级小部件。例如,在WebClient上使用
show_应用程序方法:
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;
},
});
<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>
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;
},
});