Odoo10 - 如何做javascript

时间:2017-02-14 13:30:47

标签: javascript odoo odoo-10

我必须做一些完全错误的事情:

odoo.define('my_module.popups', function (require) {
    'use strict';
    var ajax = require('web.ajax');
    var core = require('web.core');
    var _t = core._t;
    var qweb = core.qweb;
    ajax.loadXML('/my_module/static/xml/templates.xml', qweb);

    var data = {modal_title: 'This is a popup!',modal_body: 'testtest'};
    var p = qweb.render("my_module.popup1_template", data);
    p.prependTo('body');
});

我不确定我明白这一点。 define中的代码永远不会执行。我阅读了许多关于如何创建Widget等的文档和示例。但是文档从未解释过如何使用/调用这些放在'define'中的东西。

我也可以手动创建弹出窗口并将其添加到body元素中,但我想以odoo方式执行此操作。

1 个答案:

答案 0 :(得分:1)

我听说你,我认为Odoo的js框架的秘密是许多人喜欢保守的秘密武器。我相信,如果你在过去的4年里一直在使用backbone,requirejs和下划线,这一切都是显而易见的。可悲的是那不是我。

如果您查看/addons/web/static/src/js/widgets/notification.js中的通知模块,您应该能够看到他们在做什么。一些可能对您有帮助的事情是进行一些登录,以查看您的脚本是否正在加载以及何时加载。对于您要做的事情,您需要提供一些事件映射。我提到的文件中有一个例子。在你的jsmodule中,你将创建一个具有类似事件属性的对象。

events: {
    'click .o_close': function(e) {
        e.preventDefault();
        this.destroy(true);
    },
    'hover .my_widget_class': function(e){
        // your code here
    },
},

不要按字面意思理解上述代码。您需要一个事件来触发您在某个时刻将小部件附加到dom。

相关问题