Aro*_*ncz 6 javascript xml openerp odoo odoo-8
我在Odoo中创建了一个自定义小部件,并将其显示为表单字段.我的模板看起来像这样:
<t t-name="ImageDisplayer">
<img t-att-src="?"/>
</t>
Run Code Online (Sandbox Code Playgroud)
如何将字段的值放入<img>
标记的src
属性中?
花了一天时间挖掘源代码后,我找到了解决方案!它并不真正涉及模板,但我从默认文本字段小部件的源代码中获得了这个想法,所以我认为它不应该被视为"黑客".
这是我的自定义小部件类:
openerp.mymodule = function(instance, local) {
instance.ImageDisplayer = instance.web.form.AbstractField.extend({
template: "ImageDisplayer",
init: function (view, code) {
this._super(view, code);
},
// The key part:
render_value: function() {
this.$el[0].src = this.get("value");
}
});
instance.web.form.widgets.add('ImageDisplayer', 'instance.ImageDisplayer');
}
Run Code Online (Sandbox Code Playgroud)
我的模板现在不包含任何特殊内容:
<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">
<t t-name="ImageDisplayer">
<img />
</t>
</templates>
Run Code Online (Sandbox Code Playgroud)
奇迹般有效.每当我在服务器端进行更改时,它甚至会更新页面.
Odoo文档真的应该更健谈!
更新:答案适用于Odoo 8.它在Odoo 9中可能略有不同,因为他们在新版本中修改了UI框架.