在odoo中添加js 9
问题描述:
我想在销售点中扩展OrderWidget并在h2标签之间显示日期。在odoo中添加js 9
<script>
var d = new Date();
var strDate = d.getFullYear() + "/" + (d.getMonth()+1) + "/" + d.getDate();
$("#div1").load(strDate);
</script>
我继承OrderWidget的模板这样。
<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<t t-extend="OrderWidget" >
<t t-jquery=".order-empty" t-operation="append">
<h2 id="div1"></h2>
</t>
</t>
</templates>
我在哪里可以把脚本放在上面的例子中?
答
您正确继承了OrderWidget模板。
<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<t t-extend="OrderWidget" >
<t t-jquery=".order-empty" t-operation="append">
<h2><span t-esc="strDt"/></h2>
</t>
</t>
</templates>
所以,现在你需要设置日期间<h2 id="div1"></h2>
可以包括这样的OrderWidget。
然后,您需要创建一个.js文件以包含您的自定义代码,比如说order_extend.js。
odoo.define('your_module.order_extend', function (require) {
"use strict";
var screens = require('point_of_sale.screens');
var core = require('web.core');
var QWeb = core.qweb;
var _t = core._t;
screens.OrderWidget.include({
renderElement: function(scrollbottom){
var order = this.pos.get_order();
if (!order) {
return;
}
var orderlines = order.get_orderlines();
var d = new Date();
var strDate = d.getFullYear() + "/" + (d.getMonth()+1) + "/" + d.getDate();
var el_str = QWeb.render('OrderWidget',{widget:this, order:order, orderlines:orderlines,strDt:strDate});
var el_node = document.createElement('div');
el_node.innerHTML = _.str.trim(el_str);
el_node = el_node.childNodes[0];
var list_container = el_node.querySelector('.orderlines');
for(var i = 0, len = orderlines.length; i < len; i++){
var orderline = this.render_orderline(orderlines[i]);
list_container.appendChild(orderline);
}
if(this.el && this.el.parentNode){
this.el.parentNode.replaceChild(el_node,this.el);
}
this.el = el_node;
this.update_summary();
if(scrollbottom){
this.el.querySelector('.order-scroller').scrollTop = 100 * orderlines.length;
}
},
});
});
而这个js文件需要在xml文件中这样添加到pos后端。
例如。 TEMPLATE.XML
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<template id="assets" inherit_id="point_of_sale.assets">
<xpath expr="." position="inside">
<script type="text/javascript" src="/your_module/static/src/js/order_extend.js"></script>
</xpath>
</template>
</data>
</openerp>
而且TEMPLATE.XML你需要在的OpenERP .py文件中添加这样的数据部分该XML文件。
...
'data': [
...
...
'views/template.xml',
],
....
我希望这个答案值得你。
Tnx求助我复制你的例子,但不工作。我会尝试找到问题。 – Pointer
我在我身边试过了。可能是在做任何错误。或者可能是你没有清除浏览器的缓存。尝试缓存清除后。 –
在我的odoo 9版本无法正常工作的同时,我也无法解决任何错误! – Pointer