在 odoo 11 的列表视图按钮上调用操作(功能)
Call action(Function) on List View Button for odoo 11
我在创建和导入按钮附近的列表视图中添加了一个按钮。现在我想对该按钮应用操作但不调用该按钮的功能。该按钮在列表视图中可见,并且还调用了文件,我用警报进行了测试。第一个警报工作正常,但 ListView.include 警报不工作。
我的 js 和 XML 代码在这里:
<?xml version="1.0" encoding="UTF-8"?>
<templates>
<t t-extend="ListView.buttons" id="template" xml:space="preserve">
<t t-jquery="button.o_list_button_add" t-operation="after">
<button t-if="widget.model != 'account.analytic.line'" class="btn btn-primary btn-sm sync_button"
type="button" >HELP
</button>
</t>
</t>
</templates>
js文件:
odoo.define('custom_project.web_export_view', function (require){
"use strict";
var core = require('web.core');
var ListView = require('web.ListView');
var QWeb = core.qweb;
alert('Help1');
console.log('testtt',ListView.include)
ListView.include({
render_buttons: function($node) {
alert('Help2');
var self = this;
this._super($node);
this.$buttons.find('.o_list_tender_button_create').click(this.proxy('tree_view_action'));
},
tree_view_action: function () {
alert('Help2');
this.do_action({
type: "ir.actions.act_window",
name: "product",
res_model: "product.template",
views: [[false,'form']],
target: 'current',
view_type : 'form',
view_mode : 'form',
flags: {'form': {'action_buttons': true, 'options': {'mode': 'edit'}}}
});
return { 'type': 'ir.actions.client','tag': 'reload', } }
});
});
另附上截图以供理解
任何人都可以提出解决这个问题的方法吗?
提前致谢
能否请您这样写:
XML:
<?xml version="1.0" encoding="UTF-8"?>
<templates id="help_btn_template" xml:space="preserve">
<t t-extend="ListView.buttons" id="template" xml:space="preserve">
<t t-jquery="button.o_list_button_add" t-operation="after">
<button t-if="widget.model != 'account.analytic.line'" class="btn btn-primary btn-sm sync_button o_button_help"
type="button" >HELP
</button>
</t>
</t>
JS:
odoo.define('custom_project.web_export_view', function (require) {
"use strict";
var core = require('web.core');
var ListView = require('web.ListView');
var ListController = require("web.ListController");
var includeDict = {
renderButtons: function () {
this._super.apply(this, arguments);
if (this.modelName === "account.analytic.line") {
var your_btn = this.$buttons.find('button.o_button_help')
your_btn.on('click', this.proxy('o_button_help'))
}
},
o_button_help: function(){
var self = this;
var state = self.model.get(self.handle, {raw: true});
return self.do_action({
name: 'product',
type: 'ir.actions.act_window',
res_model: 'product.template', #This model must Transient Model
target: 'new',
views: [[false, 'form']],
view_type : 'form',
view_mode : 'form',
flags: {'form': {'action_buttons': true, 'options': {'mode': 'edit'}}
});
}
};
ListController.include(includeDict);
});
希望对您有所帮助。谢谢你。
我在创建和导入按钮附近的列表视图中添加了一个按钮。现在我想对该按钮应用操作但不调用该按钮的功能。该按钮在列表视图中可见,并且还调用了文件,我用警报进行了测试。第一个警报工作正常,但 ListView.include 警报不工作。
我的 js 和 XML 代码在这里:
<?xml version="1.0" encoding="UTF-8"?>
<templates>
<t t-extend="ListView.buttons" id="template" xml:space="preserve">
<t t-jquery="button.o_list_button_add" t-operation="after">
<button t-if="widget.model != 'account.analytic.line'" class="btn btn-primary btn-sm sync_button"
type="button" >HELP
</button>
</t>
</t>
</templates>
js文件:
odoo.define('custom_project.web_export_view', function (require){
"use strict";
var core = require('web.core');
var ListView = require('web.ListView');
var QWeb = core.qweb;
alert('Help1');
console.log('testtt',ListView.include)
ListView.include({
render_buttons: function($node) {
alert('Help2');
var self = this;
this._super($node);
this.$buttons.find('.o_list_tender_button_create').click(this.proxy('tree_view_action'));
},
tree_view_action: function () {
alert('Help2');
this.do_action({
type: "ir.actions.act_window",
name: "product",
res_model: "product.template",
views: [[false,'form']],
target: 'current',
view_type : 'form',
view_mode : 'form',
flags: {'form': {'action_buttons': true, 'options': {'mode': 'edit'}}}
});
return { 'type': 'ir.actions.client','tag': 'reload', } }
});
});
另附上截图以供理解
任何人都可以提出解决这个问题的方法吗?
提前致谢
能否请您这样写:
XML:
<?xml version="1.0" encoding="UTF-8"?>
<templates id="help_btn_template" xml:space="preserve">
<t t-extend="ListView.buttons" id="template" xml:space="preserve">
<t t-jquery="button.o_list_button_add" t-operation="after">
<button t-if="widget.model != 'account.analytic.line'" class="btn btn-primary btn-sm sync_button o_button_help"
type="button" >HELP
</button>
</t>
</t>
JS:
odoo.define('custom_project.web_export_view', function (require) {
"use strict";
var core = require('web.core');
var ListView = require('web.ListView');
var ListController = require("web.ListController");
var includeDict = {
renderButtons: function () {
this._super.apply(this, arguments);
if (this.modelName === "account.analytic.line") {
var your_btn = this.$buttons.find('button.o_button_help')
your_btn.on('click', this.proxy('o_button_help'))
}
},
o_button_help: function(){
var self = this;
var state = self.model.get(self.handle, {raw: true});
return self.do_action({
name: 'product',
type: 'ir.actions.act_window',
res_model: 'product.template', #This model must Transient Model
target: 'new',
views: [[false, 'form']],
view_type : 'form',
view_mode : 'form',
flags: {'form': {'action_buttons': true, 'options': {'mode': 'edit'}}
});
}
};
ListController.include(includeDict);
});
希望对您有所帮助。谢谢你。