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/ 自己学到这里的时候,不能清除的分 ...
随机推荐
- k8s系列--node(k8s节点介绍,新增节点,移除节点)
一.简介 Node是Pod真正运行的主机,可以是物理机也可以是虚拟机. Node本质上不是Kubernetes来创建的, Kubernetes只是管理Node上的资源. 为了管理Pod,每个Node节 ...
- 记 iTextSharp 提取中文的问题
原文 问题 下面的代码中 currentText 能提取到大部分汉字 但是字体为 Non-Embedded Font: AdobeSongStd-Light(Horizontal) 的汉字提取不到 P ...
- Vben Admin 源码学习:项目初始化
0x00 前言 Vue-Vben-Admin 是一个免费开源的中后台模版.使用了最新的vue3,vite2,TypeScript等主流技术开发,开箱即用的中后台前端解决方案考. 本系列本着学习参考的目 ...
- Python Beautiful Soup库
Beautiful Soup库 Beautiful Soup库:https://www.crummy.com/software/BeautifulSoup/ 安装Beautiful Soup: 使用B ...
- Jackson多态序列化
场景 做一个消息中心,专门负责发送消息.消息分为几种渠道,包括手机通知(Push).短信(SMS).邮件(Email),Websocket等渠道. 我定义了一个基类MessageRequest用来接收 ...
- Spring Ioc源码分析系列--容器实例化Bean的四种方法
Spring Ioc源码分析系列--实例化Bean的几种方法 前言 前面的文章Spring Ioc源码分析系列--Bean实例化过程(二)在讲解到bean真正通过那些方式实例化出来的时候,并没有继续分 ...
- 文字轮播与图片轮播?CSS 不在话下
今天,分享一个实际业务中能够用得上的动画技巧. 巧用逐帧动画,配合补间动画实现一个无限循环的轮播效果,像是这样: 看到上述示意图,有同学不禁会发问,这不是个非常简单的位移动画么? 我们来简单分析分析, ...
- 2021.06.05【NOIP提高B组】模拟 总结
T1 题意:给你一个 \(n\) 个点 \(n\) 条边的有向图, 求每个店经过 \(K\) 条边后的边权和.最小边权 \(K\le 10^{10}\) 考试时:一直想着环,结果一直不知道怎么做 正解 ...
- Linux服务器安装图形化界面
Linux服务器安装图形化界面 1.检查有无安装gnome桌面 [root@localhost ~]# rpm -qa |grep gnome 2.查看可安装组件列表 [root@localhost ...
- 深度学习与计算机视觉教程(15) | 视觉模型可视化与可解释性(CV通关指南·完结)
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...