2

我在 ODOO V8 中创建了一个网站模板:

<template id="assets_frontend" inherit_id="website.assets_frontend" name="MyTemplate">
    <xpath expr="." position="inside">
        <script type="text/javascript" src="/my_module/static/src/js/main.js"></script>
    </xpath>
</template>


<template id="my_template">
    <script type="text/javascript" src="/my_module/static/src/js/main.js"/>
    <div>
        <table>
            <tr>
                <td>Email: <input type="text" id="email"/></td>
            </tr>
            <tr>
                <td colspan="3">
                    <input type="button" value="Submit" onclick="submitEmail();"/>
                </td>
            </tr>
        </table>
    </div>
</template>

main.js 文件中的内容是:

$(document).ready(function () {
    "use strict";

    function submitEmail() {
        var self = this;
        var website = openerp.website;
        var Users = new openerp.website.Model('res.users');
        // ...
    }
})();

但是在单击模板中的提交按钮时,它会在浏览器控制台中显示以下错误。

Uncaught ReferenceError: openerp is not defined

我需要从main.js文件中访问其中的 ODOO 模型和方法。如何解决上述错误,或者有什么方法可以从 javascript 文件访问 ODOO 类中定义的模型和方法?

此错误不在 ODOO 中的基本模块(如 website_sale)中,并且该错误仅在我创建的新模块中。

4

2 回答 2

1

在 $(document).ready 你不能访问 openerp 。

在 js 文件中创建一个与您的模块(不是模型)同名的方法并传递两个参数实例和模块

现在在方法中,您可以使用 openerp 实例访问模块,例如:

function my_module(instance, module){
module = instance.point_of_sale;
var QWeb = instance.web.qweb;
_t = instance.web._t;
var OrderSuper = module.ProductListWidget;
}
于 2016-06-01T09:24:33.233 回答
0

您需要阅读本文档https://www.odoo.com/documentation/8.0/reference/javascript.html并注意“子类化小部件”。这是 Odoo 中的一个模块示例。您必须编写类似该示例的程序。

于 2016-06-01T07:22:34.737 回答