在Odoo 8上运行客户端JavaScript而不加载新的(空白)视图

问题描述:

我需要在Odoo 8中的表单视图中的按钮运行一些客户端JavaScript。此按钮运行一个Python方法返回此字典:在Odoo 8上运行客户端JavaScript而不加载新的(空白)视图

{"type": "ir.actions.client", 
"tag": "my_module.do_something",} 

do_something在.js文件定义如下:

openerp.my_module = function (instance) { 
    instance.web.client_actions.add("my_module.do_something", "instance.my_module.Action"); 
    instance.my_module.Action = instance.web.Widget.extend({ 
     init: function() { 
      // Do a lot of nice things here 
     }  
    }); 
}; 

现在,JavaScript是加载并正确执行,但即使启动初始化函数之前,Odoo加载一个全新的,空白视图,一旦JavaScript结束,我无法浏览任何其他菜单条目。事实上,无论我点击我得到这个错误:

Uncaught TypeError: Cannot read property 'callbackList' of undefined 

我所需要的,而不是为运行从那里按钮所属的表单视图的JavaScript,而无需加载一个新的观点,这样既得到了JavaScript的东西做,所有回调和整个环境保持良好状态。我的直觉是,我不应该重写init函数(或者可能整个事情都坏了,我对Odoo客户端js来说是个新手),但是我找不到docs既不是一个很好的例子,我想要的方式。任何想法得到这个?

对不起,我不上,因为V8大量的时间工作,我不记得如何添加,但是这可能会帮助您:https://github.com/odoo/odoo/blob/8.0/doc/howtos/web.rst

另外,如果你搜索到V8引擎的代码库您可以找到一些客户端动作发生web模块文档https://github.com/odoo/odoo/search?utf8=%E2%9C%93&q=instance.web.client_actions.add

+0

感谢simahawk,你让我的一天!在github上搜索的链接找到了我需要的很多例子,并且我已经能够修复我的功能。奖励! – warp10

感谢指针simahawk张贴在另一个答案,我已经能够解决我的js,现在正在做我所需要的。供您参考,代码如下:

openerp.my_module = function (instance) { 
    instance.web.client_actions.add("my_module.do_something", "instance.my_module.action"); 
    instance.my_module.action = function (parent, action) { 
     // Do a lot of nice things here 
    } 
};