Skip to Content
Meniu
Trebuie să fiți înregistrat pentru a interacționa cu comunitatea.
Această întrebare a fost marcată
1 Răspunde
6717 Vizualizări

I have created my own widget to be called in tree views this way:

<field name="selected" widget="toggle_switch"/>

The field selected is of type boolean. I created the widget class extending the Column class:

var ListView = require('web.ListView');
var ToggleSwitch = ListView.Column.extend({
   ...
})

And I have registered it this way:

var core = require('web.core');
core.list_widget_registry.add('field.toggle_switch', ToggleSwitch);

And it is working, but now I want to modify the value of the selected field each time the user clicks on the main element of the template I made for the widget.

The problem is that I am not able to do that. It seems that events dictionary is not available for the Column class, and I cannot use something like this.on('click', this, this.on_click); or this.$el.find(...), as this brings only the field data.

Can anyone help me? Should I inherit from other classes to use events in my widget (in fact I have tried, but in every case my Qweb template just disappeared from the tree view...)?

Imagine profil
Abandonează
Cel mai bun răspuns

Hi,

You can do with the following js code.

odoo.define('listview_click', function(require) {
"use strict";

var ListView = require('web.ListView');

ListView.List.include({
init: function(group, opts) {
this._super.apply(this, arguments);
this.$current.delegate('td label.switch', 'click', function(e) {
e.stopPropagation();
// execute your code here, like:
var checked = $(e.currentTarget).find('input').prop('checked');
});
}
});
});

Regards

Imagine profil
Abandonează
Related Posts Răspunsuri Vizualizări Activitate
0
iun. 21
4
0
iun. 21
5
1
aug. 22
2570
5
iul. 19
8254
2
aug. 24
6558