1

嗨,我被困在一个在表单视图上呈现自定义 html 内容的小部件创建上,我不知道如何遵循。这是我的代码

js:

(function (instance) {
    var _t = instance.web._t,
        _lt = instance.web._lt;
    var QWeb = instance.web.qweb;

    console.log('hi..........');  // Custome message to dispaly on console
    openerp.my_module = function (instance, local) {
        console.log(instance);
        instance.web.form.widgets.add('my_module.home', 'instance.my_module.Home');
        instance.my_module.Home = instance.web.form.FormView.extend({
            template: 'my_template',
            init: function (view, code) {
                console.log("::: INIT");
            },
            start: function () {
                console.log("::: START");
            }
        });

    }
})(openerp);

xml模板

<?xml version="1.0" encoding="UTF-8"?>
    <templates id="template" xml:space="preserve">
        <t t-name="my_template">
            <div>
                Template content
            </div>
        </t>
    </templates>

此时仅在终端中显示'hi..........'和对象实例,而从不运行小部件代码。所以我的问题是。如何在表单配置中使用它,如果我在这里遗漏了什么

    <record id="view_form_my_module" model="ir.ui.view">
        <field name="name">My Module</field>
        <field name="model">my.module</field>
        <field name="arch" type="xml">
            <form>
                <sheet>
                    **HOW TO ISE IT HERE**
                </sheet>
            </form>
        </field>
    </record>
4

1 回答 1

3

在我看来,您可能真的想使用 aFormWidget而不是扩展FormView. 我不是 javascript 扩展方面的专家。但是,如果您按照此处The Form View Custom Widgets找到的文档进行操作,您可能会发现更容易完成您的目标。使用标签也很容易将您的小部件拖放到任何表单视图中。<widget/>

local.YourWidgetClassName = instance.web.form.FormWidget.extend({
    start: function() {
        this._super();
        this.display_html();
    },
    display_html: function() {
        this.$el.html(QWeb.render("your_qweb_template", {
            "arg1": "Hello",
            "arg2": "World",
        }));
    }
});

instance.web.form.custom_widgets.add('widget_tag_name', 'instance.your_addon_name.YourWidgetClassName');

现在在你的 qweb 中,我会这样称呼它。

<widget type="widget_tag_name"></widget>
于 2016-11-08T18:04:22.063 回答