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/ 自己学到这里的时候,不能清除的分 ...
随机推荐
- 706. Design HashMap - LeetCode
Question 706. Design HashMap Solution 题目大意:构造一个hashmap 思路:讨个巧,只要求key是int,哈希函数选择f(x)=x,规定key最大为100000 ...
- 深入C++02:深入学习C++还必须掌握的基础
深入学习C++还必须掌握的基础 掌握形参带默认的函数 1.给默认值方向:从右向左给默认值: 2.调用效率:如果传默认值或者立即数(不需要从容器或内存取取的数字)的话都是直接将数字直接push进栈:没有 ...
- 高通(QCOM)sensor bring up
高通7150平台 1.添加驱动文件 2.添加编译 3.配置json文件 4.高通默认配置 5.部分sensor外挂电源 6.遇到的问题 1.添加驱动文件 路径:adsp_proc/ssc/sensor ...
- RMQ——ST表
ST表 ST表是一种解决RMQ问题的强有力工具, 可以做到O(nlogn)预处理,O(1)查询. st[i][j] 表示区间 [i, i + 2 ^ j - 1] 的最大值. 初值 st[i][0] ...
- CPPRESTSDK 编译
首先要 git clone这个库git clone git://github.com/Microsoft/cpprestsdk.git然后git 一下 Vcpkg.\vcpkg\bootstrap-v ...
- React关于constructor与super(props)之间的相爱相杀
我们先把菜鸟教程的一段代码拿过来分析一下.下面这段代码是用了将生命周期方法添加到类中实现时钟效果. // 将生命周期方法添加到类中 class Clock extends React.Componen ...
- 重学ES系列之函数优化
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- sql-sql优化
SQL执行流程 a. 编写过程: select dinstinct .. from .. join .. on .. where .. group by .. having .. order by . ...
- go-zero微服务实战系列(八、如何处理每秒上万次的下单请求)
在前几篇的文章中,我们花了很大的篇幅介绍如何利用缓存优化系统的读性能,究其原因在于我们的产品大多是一个读多写少的场景,尤其是在产品的初期,可能多数的用户只是过来查看商品,真正下单的用户非常少.但随着业 ...
- IDEA项目启动乱码小方块
在看完执行了网上各种文章之后,我发现没有一个适合我的. 最终,终于,在朋友的远程帮助下解决了. 如果你还有这个问题的话,可以试一下这个: 右键项目,打开终端,执行下面这个命令(手动指定一下maven ...