标签:function ControlPanelMixin AbstractAction 添加 odoo var 控制面板 客户端
点击跳转进入免费课程(课程持续更新中…)
课件文档地址:点击跳转
课程环境地址:点击跳转 账密:testuser
gitee代码地址:点击跳转(分支learning_odoo12)
微信公众号二维码:
描述
简单来说客户端动作通过注册一组widget,来绑定特定的action.
从服务器的角度来看客户端动作仅仅是 ir_action模型中保存的一条记录;从Web客户端角度来看,他是一个继承自AbstractAction类的小部件(widget)。
使用客户端动作前需要在注册表中进行注册(core.action_registry.add(’’, ‘’))
添加客户端动作(Adding a client action)
客户端动作是一个小部件(Widget),添加客户端动作需要实现两个步骤:创建一个新的小部件以及在注册表中进行注册
添加新的小部件(Widget)
var AbstractAction = require('web.AbstractAction');
var core = require('web.core');
var TongjiPage = AbstractAction.extend({
template: 'MainTongjiPage',
init: function(){
return this._super.apply(this, arguments);
},
}),
客户端动作的注册
首先我们需要web客户端和TongjiPage 的映射
core.action_registry.add('tongji.page.main', TongjiPage);
然后,我们需要多在ir.actions.client中定义一条tag属性为tongji.page.main的记录
<record id="action_tongji_page" model="ir.actions.client">
<field name="name">统计</field>
<field name="tag">tongji.page.main</field>
</record>
## 控制面板(ControlPanelMixin) 那么问题来了什么是控制面板?
如下图 的红色框框区域↓↓↓
那么在我们自定义的界面如何添加odoo 默认的控制面板呢?首先要知道的是默认AbstractAction类是不支持控制面板的。
在新增的Widget中添加控制面板的格式如下:
var ControlPanelMixin = require('web.ControlPanelMixin');
var TongjiPage = AbstractAction.extend(ControlPanelMixin, {
template: 'MainTongjiPage',
init: function(){
return this._super.apply(this, arguments);
},
}),
每次更新控制面板时需要调用_updateControlPanel方法(官方示例):
var SomeClientAction = Widget.extend(ControlPanelMixin, {
...
start: function () {
this._renderButtons();
this._updateControlPanel();
...
},
do_show: function () {
...
this._updateControlPanel();
},
_renderButtons: function () {
this.$buttons = $(QWeb.render('SomeTemplate.Buttons'));
this.$buttons.on('click', ...);
},
_updateControlPanel: function () {
this.update_control_panel({
cp_content: {
$buttons: this.$buttons,
},
});
标签:function,ControlPanelMixin,AbstractAction,添加,odoo,var,控制面板,客户端 来源: https://blog.csdn.net/weixin_34749051/article/details/113524972
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。