Odoo14 OWL 如何访问model方法和res_id
首先OWL是Odoo14版本新加的功能。
因为是新加的所以并没有太多的说明文档,包括英文板文档也没有;所以你要用它再没有更详细的文档之前你得自己去看源码。
注意owl是没有do_action函数给你跳转至其他视图的。你如果要你的控件可以跳转视图的话就得用“web.AbstractField”去实现了。
owl如何访问记录res_id(或者其他记录信息):
1 this.record.res_id
owl例子:
1 odoo.define('my_company_users_widget', function (require) {
2 "use strict";
3
4 const { Component } = owl;
5 const AbstractField = require('web.AbstractFieldOwl');
6 const fieldRegistry = require('web.field_registry_owl');
7
8 //这里生成子控件
9 class UserCardInfo extends Component {
10 static template = 'UserCardInfo';
11 CardClicked() {
12 this.trigger('card-clicked', {user_id: this.props.user_id});
13 }
14 }
15
16 class FieldCompanyUser extends AbstractField {
17 static supportedFieldTypes = ['many2many'];
18 static template = 'OWLFieldCompanyUsers';
19 static components = { UserCardInfo };//子控件声明,这样你就可以在界面上使用了
20 constructor(...args) {
21 super(...args);
22 this.data_users = [];
23 }
24 async willStart() {
25 self = this
26 //
27 //
28 await this.rpc({
29 model: 'res.groups',
30 method: 'get_company_users',
31 args: [[self.record.res_id],self.record.res_id]
32 }).then(function (result){
33 self.data_users = result
34 });
35 }
36 UserCardClicked(ev) {
37 console.log(ev.detail.user_id);
38 self = this;
39 this.rpc({//不知道怎么用rpc40 model: 'res.users',
41 method: 'get_userform_action',
42 args: [[ev.detail.user_id]]
43 }).then(function (result){
44 self.action = result;
45 });
46 console.log(self.action);
47
48 //owl是没有do_action函数给你跳转至其他视图的
49 // this.do_action({
50 // name: 'User Info',
51 // type: 'ir.actions.act_window',
52 // res_model: 'res.users',
53 // view_mode: 'form',
54 // view_type: 'form',
55 // views:[false, 'form'],
56 // target: 'current',
57 // res_id: ev.detail.user_id,
58 // flags: {'form': {'action_buttons': true, 'options': {'mode': 'edit'}}},
59 // context: {}
60 // });
61 }
62 }
63
64 fieldRegistry.add('company_users', FieldCompanyUser);
65
66 return {
67 FieldCompanyUser: FieldCompanyUser,
68 };
69 });
以下是template代码
1 <?xml version="1.0" encoding="UTF-8"?>
2 <templates>
3 <t t-name="UserCardInfo" owl="1">
4 <div class="card mt16" >
5 <div class="card-body" t-on-click="CardClicked" >
6 <h5 class="card-title mt8">
7 <t t-esc="props.user_name"/>
8 </h5>
9 </div>
10 </div>
11 </t>
12
13 <div t-name="OWLFieldCompanyUsers" owl="1" t-on-card-clicked="UserCardClicked">
14 <div class="row ml16 mr16" >
15 <t t-foreach="data_users" t-as="itemUser">
16 <UserCardInfo user_name="itemUser['name']" user_id="itemUser['id']" active='false'/>
17 </t>
18 </div>
19 </div>
20
21 </templates>
Odoo14 OWL 如何访问model方法和res_id的更多相关文章
- ASP.NET MVC 5 学习教程:Edit方法和Edit视图详解
原文 ASP.NET MVC 5 学习教程:Edit方法和Edit视图详解 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 ...
- 【译】ASP.NET MVC 5 教程 - 7:Edit方法和Edit视图详解
原文:[译]ASP.NET MVC 5 教程 - 7:Edit方法和Edit视图详解 在本节中,我们继续研究生成的Edit方法和视图.但在研究之前,我们先将 release date 弄得好看一点.打 ...
- ThinkPHP的D方法和M方法的区别
M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类. 使用M方法 如果是如下情况,请考虑使用 ...
- Hibernate中evict方法和clear方法说明
Hibernate中evict方法和clear方法说明 先创建一个对象,然后调用session.save方法,然后调用evict方法把该对象清除出缓存,最后提交事务.结果报错: Exception i ...
- Android HTTP实例 使用GET方法和POST方法发送请求
Android HTTP实例 使用GET方法和POST方法发送请求 Web程序:使用GET和POST方法发送请求 首先利用MyEclispe+Tomcat写好一个Web程序,实现的功能就是提交用户信息 ...
- $(document).ready()即$()方法和window.onload方法的比较
以浏览器装载文档为例,我们都知道在页面完毕后,浏览器会通过JavaScript为DOM元素添加事件.在常规的JavaScript代码中,通常使用window.onload方法,而在jQuery中,使用 ...
- wait方法和sleep方法的区别
一.概念.原理.区别 Java中的多线程是一种抢占式的机制而不是分时机制.线程主要有以下几种状态:可运行,运行,阻塞,死亡.抢占式机制指的是有多个线程处于可运行状态,但是只有一个线程在运行. ...
- M方法和D方法的区别
M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类. 使用M方法 如果是如下情况,请考虑使用 ...
- ThinkPHP 中M方法和D方法详解----转载
转载的地址,http://blog.163.com/litianyichuanqi@126/blog/static/115979441201223043452383/ 自己学到这里的时候,不能清除的分 ...
随机推荐
- java_简单学习笔记
java_study笔记 前言: 所有笔记均总结自狂神的java基础视频 https://www.bilibili.com/video/BV12J41137hu?p=1 idea小技巧 psvm+回车 ...
- zabbix的web界面访问失败问题排查
现象:用curl访问显示拒绝链接,查看zabbix-server日志也无异常 1.检查防火墙,SElinux是否关闭 2.检查zabbix-server服务是否启动 3.检查80端口是否被占用,比方是 ...
- spring-boot rest controller 使用枚举作为参数,重写反序列化实现任意值转枚举类型
目录 BaseEnum MyEnum StringToEnumConverterFactory FormatterConfig DTO RestController 参考 BaseEnum packa ...
- 单例模式与pickle模块
目录 设计模式之单例模式 pickle模块 设计模式之单例模式 设计模式是前辈们发明的经过反复验证用于解决固定问题的固定套路,在IT行业中设计模式总共有23种,可以分为三大类:创建型.结构型.行为型. ...
- MUI+html5+script 不同页面间转跳(九宫格)
在点击图片/标题需要跳转到详情页面的使用场景中,首先定义图片元素的id为"tyzc",是同一类下的第一个图片 <img src="img/img3.png" ...
- 『忘了再学』Shell基础 — 24、Shell正则表达式的使用
目录 1.正则表达式说明 2.基础正则表达式 3.练习 (1)准备工作 (2)*练习 (3).练习 (4)^和$练习 (5)[]练习 (6)[^]练习 (7)\{n\}练习 (8)\{n,\}练习 ( ...
- ACM-由数据范围反推算法复杂度以及算法内容
一般ACM或者笔试题的时间限制是1秒或2秒. 在这种情况下,C++代码中的操作次数控制在 \(10^7\) 为最佳. 下面给出在不同数据范围下,代码的时间复杂度和算法该如何选择: 数据范围 算法选择 ...
- Django cors跨域问题
Django cors跨域问题 前后端分离项目中的跨域问题 即同源策略 同源策略:同源策略/SOP(Same origin policy)是一种约定,由 Netscape 公司 1995 年引入浏览器 ...
- SAP setting and releasing locks
REPORT demo_transaction_enqueue MESSAGE-ID sabapdocu. TABLES sflight. DATA text(8) TYPE c. DATA ok_c ...
- nginx 出现An error occurred错误
原因是我nginx中conf文件的配置里面 location中的 这一块内容是 #注释的那两行 所以报错出现这个错误. 后来将这两行注释掉,改成这两个就好了. root html; index ind ...