odoo中用javascript调用model中定义好的方法
odoo中如果前端界面要调用后台model中写好的方法,很简单。使用 do_action 即可,比如要调用改res.users的默认语言后执行的方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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的方法 虽然官方代码里不是这个写的,但是看起来直观,也没错。
1 2 3 4 5 6 7 8 9 10 | 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中要调用,需要这个样
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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,贴出来仅供参考希望不要再跳这个坑。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
2019-04-11 双点用法
2019-04-11 程序退出
2019-04-11 self sqflite sample =======================
2019-04-11 self study 权限 permission
2019-04-11 flutter 读取sdcard权限问题相关