【发布时间】:2018-10-19 09:42:37
【问题描述】:
我已经创建了自己的小部件,以这种方式在树视图中调用:
<field name="selected" widget="toggle_switch"/>
selected 字段的类型为 boolean。我创建了扩展 Column 类的小部件类:
var ListView = require('web.ListView');
var ToggleSwitch = ListView.Column.extend({
template: 'ToggleSwitchSheet',
events: {
'click .slider': 'on_click',
},
init: function() {
this._super.apply(this, arguments);
},
_format: function(row_data, options) {
return QWeb.render(this.template, {
'widget': this,
'row_data': row_data,
'prefix': session.prefix,
});
},
})
我是这样注册的:
var core = require('web.core');
core.list_widget_registry.add('field.toggle_switch', ToggleSwitch);
模板代码:
<t t-name="ToggleSwitchSheet">
<label class="switch">
<t t-if="row_data['selected']['value']">
<input type="checkbox" checked="checked"/>
</t>
<t t-if="!row_data['selected']['value']">
<input type="checkbox"/>
</t>
<span class="slider round"></span>
</label>
</t>
它正在工作,但现在我想在每次用户单击我为小部件制作的模板的主要元素时修改 selected 字段的值。
问题是我无法做到这一点。似乎events 字典不适用于Column 类,我不能使用this.on('click', this, this.on_click); 或this.$el.find(...) 之类的东西,因为this 只带来field 数据。
谁能帮帮我?我是否应该从其他类继承以在我的小部件中使用事件(事实上我已经尝试过,但在每种情况下我的 Qweb 模板都只是从树视图中消失了......)?
【问题讨论】:
-
请提供您的模板和/或小部件代码,以便我给您一个正确的答案
-
我已经更新了我的问题以显示整个 JS 和 Qweb 代码。
标签: javascript xml odoo odoo-10 qweb