嗨,我被困在一个窗口小部件创建,它在窗体视图上呈现自定义的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>
答案 0 :(得分:2)
在我看来,您可能真的想要使用FormWidget
而非扩展FormView
。我不是javascript扩展专家。但是,如果您按照The Form View Custom Widgets
找到here的文档进行操作,您可能会发现更容易实现您的目标。使用<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>