首页 > 编程语言 >odoo中用javascript调用model中定义好的方法,及要注意的坑

odoo中用javascript调用model中定义好的方法,及要注意的坑

时间:2023-09-22 09:24:22浏览次数:63  
标签:form res javascript tree odoo picking model id view

odoo中如果前端界面要调用后台model中写好的方法,很简单。使用 do_action 即可,比如要调用改res.users的默认语言后执行的方法

odoo.define('switch_language.SwitchLanguageMenu', function (require) {
    "use strict";
 
    var Model = require('web.Model');
    var session = require('web.session');
    var UserMenu = require('web.UserMenu');
 
    UserMenu.include({
        on_menu_lang: function (ev) {
            var self = this;
            var lang = ($(ev).data("lang-id"));
            new Model('res.users').call('write', [[session.uid], {'lang': lang}]).then(function () {
                    self.do_action({
                        type: 'ir.actions.client',
                        res_model: 'res.users',
                        tag: 'reload_context',
                        target: 'current'
                    });
                });
            return false;
        }
    });
 
});

  

另外有些坑要注意,主要是列表视图,python中用tree,在js中却用了list

下面这个是在python 中实现按钮点击,跳转action的方法 虽然官方代码里不是这个写的,但是看起来直观,也没错。

  return {
            'type': 'ir.actions.act_window',
            'res_model': 'stock.picking',
            'view_mode': 'tree,form',
            'view_type': 'form',
            'name': u'查看出/入库单',
            'views': [(stock_picking_tree_ids, 'tree'), (view_picking_form_id, 'form')],
            'view_id': stock_picking_tree_ids,
            'domain': "[('so_id','='," + str(ids[0]) + "),('state','not in',['waiting'])]",
        }

  

但在js中要调用,需要这个样

this.do_action({
                        type: 'ir.actions.act_window',
                        res_model: "crm.phonecall",
                        view_mode: 'tree',
                        view_type: 'tree,form',
                        views: [[false, 'list'],[false, 'form']],
                        domain:'[("previous_contact_id","=",'+id+')]',
                        target: 'current',
                        context:"{'default_previous_contact_id':"+id+"}",
                    }, {
                        on_reverse_breadcrumb: function () {
                            self.reload();
                        }
                    });

  

这是经过一番源码的大量搜索找到的写法。

细心的朋友会发现,其实没啥大的区别,只是

views:[[false,'list'],[false,'form']],views':[(stock_picking_tree_ids,'tree'),(view_picking_form_id,'form')],

这里面的类型不一样在python中用了tree而在js中却用了list,贴出来仅供参考希望不要再跳这个坑。


标签:form,res,javascript,tree,odoo,picking,model,id,view
From: https://www.cnblogs.com/pythonClub/p/17721532.html

相关文章

  • 无涯教程-JavaScript - F.INV函数
    描述F.INV函数返回F概率分布的倒数。如果p=F.DIST(x...),则F.INV(p...)=x。F分布可用于比较两个数据集变异程度的F检验。语法F.INV(probability,deg_freedom1,deg_freedom2)争论Argument描述Required/OptionalProbabilityAprobabilityassociatedwiththeF......
  • 无涯教程-JavaScript - FISHER函数
    描述FISHER函数返回x处的Fisher变换。这种转换产生的功能通常呈正态分布而不是倾斜。使用此功能对相关系数执行假设检验。语法FISHER(x)争论Argument描述Required/OptionalXAnumericvalueforwhichyouwantthetransformation.RequiredNotesFisher变换的等......
  • JavaScript Library – Svelte
    前言上一回我介绍了 Alpine.js。作为我开发企业网站draft版本的renderengine。用了一阵子后,我觉得它真的非常不好用。所以打算换一个。前端有好几个framework/library/compiler都可以用来做MVVMrenderengine。比如Angular、React、Vue、LIt、Solid、Qwik、Svelt......
  • JavaScript实现数组对象去重
    有多种实现方式:一、使用 Set 对象:1Array.from(new Set(array))该方法会先创建一个 Set 对象,然后再使用 Array.from 方法将 Set 对象转换为数组,因为 Set 对象不允许有重复的元素,所以这样可以实现去重的效果。但是,如果数组中的元素是对象,Set 对......
  • Javascript闭包(Closure)
    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。下面就是我的学习笔记,对于Javascript初学者应该是很有用的。一、变量的作用域要理解闭包,首先必须理解Javascript特殊的变量作用域。变量的作用域无非就是两种:全局变量和局部变量。Javascript语言......
  • 无涯教程-JavaScript - COUNTIFS函数
    描述COUNTIFS函数将多个条件应用于跨多个范围的单元格,并计算满足所有条件的次数。语法COUNTIFS(criteria_range1,criteria1,[criteria_range2,criteria2]…)争论Argument描述Required/Optionalcriteria_range1Thefirstrangeinwhichtoevaluatetheassociat......
  • Javascript中window.setInterval和window.setTimeout的区别
    在使用JScript的时候,我们有时需要间隔的执行一个方法,比如用来产生网页UI动画特效啥的。这是我们常常会使用方法setInterval或setTimeout,但是由于这两个方法是由脚本宿主模拟出来的Timer线程,在通过其调用我们的方法是不能为其传递参数。我们常用的使用场景是:代码如下:window.setTi......
  • 无涯教程-JavaScript - COUNTIF函数
    描述COUNTIF函数计算符合条件的单元格数。语法COUNTIF(range,criteria)争论Argument描述Required/Optionalrange您要计数的单元格组。范围可以包含数字,数组,命名范围或包含数字的引用。空白和文本值将被忽略。RequiredcriteriaAnumber,expression,cellr......
  • JavaScript函数大全 集合
    JavaScript函数大全集合javascript提供了许多函数供开发人员使用,下面给出一个简单介绍,更详细的信息请参考VisualInterDev提供的在线帮助。javascript函数一共可分为五类:·常规函数·数组函数·日期函数·数学函数·字符串函数1.常规函......
  • Odoo看板视图实践案例
    看板视图是一个很常见的可视化解决方案了,例如:联系人卡片,任务卡片,还有二次元朋友们经常逛的哔站。我个人也是非常喜欢看板视图,比起那些呆板的tree视图,看板视图给人的感觉的就是简洁直观又好看。本人也是初学Odoo一个月,其中深意只知其一,但也想跟各位大佬分享交流,于是斗胆以拙见一......