如何在 header 按钮内为 formview 编写事件?奥多10
how to write events for formview inside header buttons? odoo 10
我已经在 odoo10 社区中尝试过此代码但无法正常工作,我的错是什么?
或者谁能指导我怎么做?
openerp.module_name= function (instance) {
var _t = instance.web._t, QWeb = instance.web.qweb;
instance.web.FormView = instance.web.FormView.include({
init: function() {
this._super.apply(this, arguments);
console.log("test"+this.getParent().dataset.model);
},
events: {
'click #target': 'button_clicked',
},
button_clicked : function(ev) {
console.log("test333555555");
ev.preventDefault();
ev.stopPropagation();
console.log("test 333333333333");
});
},
});
};
“首先创建”按钮,您可以在其中进行一些修改来创建。
<button string="Click" custom="click"/>
然后创建一个 JS 文件,其中将包含以下代码。
odoo.define('YOUR_MODULE.FILENAME', function (require) {
"use strict";
var form_widget = require('web.form_widgets');
var core = require('web.core');
var _t = core._t;
var QWeb = core.qweb;
form_widget.WidgetButton.include({
on_click: function() {
if(this.node.attrs.custom === "click"){
// YOUR CODE
return;
}
this._super();
},
});
});
将此 JS 添加到 XML
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="assets" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript" src="/YOURMODULE/static/js/FILENAME.js"></script>
</xpath>
</template>
</odoo>
在__manifest__.py
中添加xml
{
...
...
'data': [
...
'views/above_xml_filename.xml',
],
....
}
我希望这对你有用。
我已经在 odoo10 社区中尝试过此代码但无法正常工作,我的错是什么?
或者谁能指导我怎么做?
openerp.module_name= function (instance) {
var _t = instance.web._t, QWeb = instance.web.qweb;
instance.web.FormView = instance.web.FormView.include({
init: function() {
this._super.apply(this, arguments);
console.log("test"+this.getParent().dataset.model);
},
events: {
'click #target': 'button_clicked',
},
button_clicked : function(ev) {
console.log("test333555555");
ev.preventDefault();
ev.stopPropagation();
console.log("test 333333333333");
});
},
});
};
“首先创建”按钮,您可以在其中进行一些修改来创建。
<button string="Click" custom="click"/>
然后创建一个 JS 文件,其中将包含以下代码。
odoo.define('YOUR_MODULE.FILENAME', function (require) {
"use strict";
var form_widget = require('web.form_widgets');
var core = require('web.core');
var _t = core._t;
var QWeb = core.qweb;
form_widget.WidgetButton.include({
on_click: function() {
if(this.node.attrs.custom === "click"){
// YOUR CODE
return;
}
this._super();
},
});
});
将此 JS 添加到 XML
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="assets" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript" src="/YOURMODULE/static/js/FILENAME.js"></script>
</xpath>
</template>
</odoo>
在__manifest__.py
中添加xml{
...
...
'data': [
...
'views/above_xml_filename.xml',
],
....
}
我希望这对你有用。