Opened 9 years ago

Closed 8 years ago

Last modified 7 years ago

#2340 closed bug (fixed)

[UI] Dispatched Events

Reported by: scottgonzalez Owned by: scottgonzalez
Priority: blocker Milestone: 1.5.1
Component: ui.core Version: 1.5
Keywords: ui event Cc:
Blocked by: Blocking:

Description

There are currently three models being used for dispatching events in the UI plugins.

accordion:

$(el).triggerHandler('<action>.ui-<plugin>', [ui], callback);

dialog, draggable, droppable, resizable, selectable, slider, sortable

$(el).triggerHandler('<plugin><action>', [e, ui], callback);

tabs:

$(el).triggerHandler('<action>.ui-<plugin>', [ui]);

The accordion and tabs models are both missing the event object in the data parameter. The tabs model is also missing the callback.

However, it is unclear which event naming convention should be used. The more widely used "<plugin><action>" convention seems more likely to avoid collisions with other event names. However, the "<action>.ui-<plugin>" convention provides the convenience of having user-defined events be cleaned up if the plugin's destroy method is called.

Change History (14)

comment:1 Changed 9 years ago by joern

Unless you actually need to provide a custom event object - for whatever reason - there is no point in passing one in.

Passing in the callback has now obvious drawbacks, that should be easy to fix for tabs.

Not sure about the namespace though.

comment:2 Changed 9 years ago by scottgonzalez

You're right about not needing to pass in the event object. I forgot that the parameters passed to the event handler will still be (event, ui) regardless of whether the plugin passes an event object in the data. My concern was only that the user would have different parameters to work with depending on the plugin (apparently I didn't think it through far enough).

comment:3 Changed 9 years ago by paul

Yes, we should definitely make sure we have one convention for naming the custom events. From a semantical view, I would prefer <plugin><action>.

However, I right now tend to go with the dot, since it feels more like it was intended.

comment:4 Changed 9 years ago by paul

  • Status changed from new to assigned

comment:5 Changed 9 years ago by scottgonzalez

Recent thoughts on why <plugin><action> might be better than <action>.ui-<plugin>:

1) Event names may overlap with real events. For instance, "slidechange" would become "change.ui-slider" which could end up being triggered from some other change event.

2) If someone develops widgets that rely on jQuery UI plugins, they may want to hook into the events and use their own namespace (to make cleanup easier). This will only be possible if the triggered events are not namespaced.

comment:6 Changed 9 years ago by paul

  • Owner changed from paul to scott.gonzalez
  • Status changed from assigned to new

Scott, I vote for <plugin><action>. I've assigned it to you - could you work on this later on in every plugin?

comment:7 Changed 9 years ago by scottgonzalez

  • Status changed from new to assigned

Accordion is fixed in [4912].

comment:8 Changed 9 years ago by scottgonzalez

Tabs updated in [4956] - Thanks Klaus.

comment:9 Changed 9 years ago by scottgonzalez

  • Resolution set to fixed
  • Status changed from assigned to closed

datepicker currently has no events

comment:10 Changed 9 years ago by anonymous

  • Milestone 1.2.4 deleted

Milestone 1.2.4 deleted

comment:11 Changed 8 years ago by scottgonzalez

  • Milestone set to 1.5.1
  • Priority changed from major to critical
  • Resolution fixed deleted
  • Status changed from closed to reopened
  • Version changed from 1.2.3 to 1.5b4

Not all plugins pass the ui parameter as the second parameter in the callback.

comment:12 Changed 8 years ago by rdworth

  • Priority changed from critical to blocker

comment:13 Changed 8 years ago by scottgonzalez

  • Resolution set to fixed
  • Status changed from reopened to closed

Fixed in [342].

Tabs should be reviewed to see if there are meaningful events that can be passed instead of null. Accordion should be reviewed to determine if a fake event should be passed instead of null.

comment:14 Changed 8 years ago by rdworth

  • Version changed from 1.5b4 to 1.5
Note: See TracTickets for help on using tickets.