Openerp Odoo:操作错误无法在上找到客户端操作(Odoo 9/Open ERP)

Openerp Odoo:操作错误无法在上找到客户端操作(Odoo 9/Open ERP),openerp,odoo-9,qweb,Openerp,Odoo 9,Qweb,我一直在利用QWeb开发一个简单的Odoo9插件,我遇到了一个问题,无论我做什么,都无法成功地从.js文件注册/调用操作 这个简单的应用程序的目的只是创建一个菜单项,带有一个调用动作的链接。菜单创建成功,但每次尝试调用操作时,都会出现以下错误: Javascript文件尝试使用以下代码注册名为test.DoSomething的操作: openerp.test = function(instance, local) { var _t = instance.web._t, _lt =

我一直在利用QWeb开发一个简单的Odoo9插件,我遇到了一个问题,无论我做什么,都无法成功地从.js文件注册/调用操作

这个简单的应用程序的目的只是创建一个菜单项,带有一个调用动作的链接。菜单创建成功,但每次尝试调用操作时,都会出现以下错误:

Javascript文件尝试使用以下代码注册名为test.DoSomething的操作:

openerp.test = function(instance, local) {
    var _t = instance.web._t,
    _lt = instance.web._lt;

    instance.web.client_actions.add('test.DoSomething', 'instance.test.DoSomething');
    instance.test.DoSomething = instance.web.Widget.extend({
        start: function() {
            console.log("Doing Something!!!!");
        }
    });
}
这是从包含以下标记的test.xml文件中引用的:

<?xml version="1.0" encoding="UTF-8"?>
<openerp>
    <data>
        <template id="assets_backend" name="test" inherit_id="web.assets_backend">
            <xpath expr="." position="inside">
            <script type="text/javascript" src="/testapp/static/src/js/test.js"/>
            </xpath>
        </template>

        <menuitem id="main_testapp_menu" name="Test App" />

        <menuitem id="testapp_menu" name="Test App"
        parent="main_testapp_menu" />

        <record id="action_home_page" model="ir.actions.client">
            <field name="name">Test Home Page</field>
            <field name="tag">test.DoSomething</field>
        </record>

        <menuitem id="home_page_menu" name="Home Page" parent="testapp_menu"
        action="action_home_page"/>
    </data>
</openerp>

是否有更新/不同的方式在Odoo 9中注册操作?即使尝试来自Odoo 8的示例代码也会产生类似的错误。

我看不出代码中有任何错误,它应该在Odoo 8中工作,只有在没有模块名称不匹配的情况下:

查看SJ中的第一行:openerp.test=functioninstance,local{此处模块名称很重要,因此您必须将其考虑在内。您不能编写openerp.Anwhere=functioninstance,local,您应该使用openerp.an_-exact_-technical_-name_of_-your_-module=functioninstance,local,以便让您的JS代码由Odoo执行

您应该使用的名称作为您的\u模块的\u确切的\u技术\u名称\u是您的模块的技术名称,即您的Odoo模块的主目录的名称,可能在您的情况下不是test?可能是testapp或其他什么?所以请使用正确的名称,而不是test,然后应该将其修复


如果您对齐名称,并且代码没有执行,那么这就意味着Odoo在Odoo版本9中更改了JS定义,而没有考虑向后兼容性,那么您将需要以一种新的样式编写整个JS代码,即在Odoo中。定义您的模块的“精确的技术名称”。一些功能要求{style…例如,请参考Odoo 9源代码中的一些JS代码,例如,虽然您可能会得到所有内容都已更改的表达式,但实际上更改非常肤浅,您仍然可以依赖当前文档,因为JS中的小部件的内部实现尚未与核心sourc中的更改保持一致E代码,但更一般的东西,比如添加/登记Odoo的新特性,你最好考虑在Odoo源中寻找例子,比如上面的< /P> > P>我在代码中没有看到任何错误,它应该在Odoo 8中工作,只有在没有模块名不匹配时:

查看SJ中的第一行:openerp.test=functioninstance,local{此处模块名称很重要,因此您必须将其考虑在内。您不能编写openerp.Anwhere=functioninstance,local,您应该使用openerp.an_-exact_-technical_-name_of_-your_-module=functioninstance,local,以便让您的JS代码由Odoo执行

您应该使用的名称作为您的\u模块的\u确切的\u技术\u名称\u是您的模块的技术名称,即您的Odoo模块的主目录的名称,可能在您的情况下不是test?可能是testapp或其他什么?所以请使用正确的名称,而不是test,然后应该将其修复


如果您对齐名称,并且代码没有执行,那么这就意味着Odoo在Odoo版本9中更改了JS定义,而没有考虑向后兼容性,那么您将需要以一种新的样式编写整个JS代码,即在Odoo中。定义您的模块的“精确的技术名称”。一些功能要求{style…例如,请参考Odoo 9源代码中的一些JS代码,例如,虽然您可能会得到所有内容都已更改的表达式,但实际上更改非常肤浅,您仍然可以依赖当前文档,因为JS中的小部件的内部实现尚未与核心sourc中的更改保持一致E代码,但更一般的东西,比如添加/登记Odoo的新特性,你最好考虑在Odoo源中寻找例子,比如我上面的

,这肯定解决了我的问题。一旦我改变了JavaScript模块名的名字,以匹配整个模块名,那么它就工作了。谢谢!这肯定解决了我的问题。将javascript模块名的名称设置为与整个模块名匹配,然后它就工作了。谢谢!
{
    'name' : 'testapp',
    'version': '1.0',
    'summary': 'testapp',
    'category': 'Tools',
    'author': 'Test',
    'description':
        """
TEST APP
====================

Simple test application for odoo
        """,
    'data': [
        'test.xml' 
    ],
    'depends' : ['web'],
    'application': True,
}