Skip to Content
Меню
Вам необхідно зареєструватися, щоб взаємодіяти зі спільнотою.
Це запитання позначене
1 Відповісти
10088 Переглядів

Has anyone known about custom_events in Odoo 12 javascript? also how to call or trigger a custom_events?

example\ https://github.com/odoo/odoo/blob/12.0/addons/web/static/src/js/fields/basic_fields.js#L153

Аватар
Відмінити
Найкраща відповідь

Odoo has a custome_event the same HTML as the DOM event.

The difference is DOM event bubble up through DOM nodes while odoo custom_event bubble up thought odoo inheritance (parent/child widget) chain.

The main purpose of the custom_events is widget decupling (loos binding) so there is no hardcoded dependency between child to parent and the widget can move around freely while structure change. child widget just triggers custom_event and it's parents responsibility to listen to an event and react upon it.

Before custom_event there are several instances where a child call parent using ugly code like this.get_parent().get_parent().call_method()

Post here if you need an example or more explanation 
=================== 
`field_change` custom_event trigger_up from here


var GrandParentWidget = Widget.extend({
       custom_events: {
            my_custom_event : '_onMyCustomEvent',
      },
     _onMyCustomEvent: function(ev) {
          console.log('event triggred', ev.data)
     }                                                      
})

var ParentWidget = GrandParentWidget.extend({
           .......
})

var ChildWidget = ParentWidget.extend({
      'click .my_link': '_onLinkClick'
      _onLinkClick: function () {
             this.trigger_up('my_custom_event', {data: {}}  
      }
})                                                                                                                                                                                                           

In the above example ChildWidget trigger_up`my_custome_event' and it will listen by GrandParent up in the inheritance chain.  

Аватар
Відмінити
Автор

Thanks for answering

So, if the class has custom_events like:

custom_events: _.extend({}, DebouncedField.prototype.custom_events, {

field_changed: '_onFieldChanged',

}),

I still confuse how and when the event is fired

I have update the answer

Автор

Oh I see. Thank you very much Ravi. It's very clear explanation

Related Posts Відповіді Переглядів Дія
0
жовт. 18
4050
0
жовт. 18
7478
3
груд. 23
30696
1
трав. 21
15839
1
квіт. 21
4526