我尝试创建自定义小部件,
*。JS
odoo.define('pos_widget',function (require) {
var PosBaseWidget = require('point_of_sale.BaseWidget');
aleert('Alert One');//It alerts
var NewWidget = PosBaseWidget.extend({
template: 'NewWidget',
init: function(parent,options){
alert('Alert Two inside init function'); // It not alerts
var self = this;
},
});
});
但在控制台上收到错误:
Error: Service pos_widget already defined boot.js:119:27
No type for action Object { context: Object } action_manager.js:631:13
error: Some modules could not be started
Failed modules: Array [ "point_of_sale.chrome" ]
Non loaded modules: Array [ "point_of_sale.main" ]
Debug: Object { point_of_sale.main: Object, point_of_sale.chrome: Object }
注意
我已经在chrome.js
文件(point_of_sale模块)中直接添加了这些行,并且可以正常工作。但不是在自定义模块中。
我该如何解决这个问题?
答案 0 :(得分:1)
您使用的名称似乎是冲突'pos_widget'
将其更改为您的like modulename.pos_custom_widget
答案 1 :(得分:1)
检查xml文件中给出的js文件的路径。它应该是这样的:
XML文件:
<?xml version="1.0" encoding="utf-8"?>
<template id="assets" inherit_id="point_of_sale.assets">
<xpath expr="." position="inside">
<script type="text/javascript" src="/custom_module/static/src/js/js_file.js"></script>
</xpath>
</template>
之后对于js文件应该是这样的:
JS档案:
odoo.define('custom_module.file_name', function (require) {
"use strict";
var PosBaseWidget = require('point_of_sale.BaseWidget');
var TableWidget = PosBaseWidget.extend({
template: 'TableWidget',
init: function(parent, options){
this._super(parent, options);
alert("Custom Widget");
}
});
});
之后在清单中添加xml文件,如下所示:
清单文件:
'data': [
'views/pos_restaurant_views.xml',
],
此后,您还必须在xml文件中创建qweb模板。并在清单中添加此qweb temlpate,如下所示:
清单中的qweb模板
'qweb': [
'static/src/xml/qweb_file.xml',
],
在此之后运行您的POS。