bootstrap icon indicating copy to clipboard operation
bootstrap copied to clipboard

uib-dropdown - ontoggle event not fired with multiple dropdowns on one page

Open cleon26 opened this issue 8 years ago • 6 comments

When I have two dropdowns on the same page, both of which are using the on-toggle event, only one of them is called when i use the other dropdown to close the first.

In this plunker, open up your console and try this:

1, click dropdown1 to open it. you'll see an event logged "dropdown1 open" 2. click dropdown1 to close it. you'll see an event logged "dropdown1 closed" 3, click dropdown2 to open it. you'll see an event logged "dropdown2 open" 4. click dropdown2 to close it. you'll see an event logged "dropdown2 closed" 5, now click dropdown1 to open it. you'll see an event logged "dropdown1 open" 4. click dropdown2 while dropdown1 is still open. dropdown2 will open and dropdown1 will close but notice that the events only show the dropdown1 messages. Since I'm doing other things in my on-toggle event, this is causing me a problem (and my users actually have to triple click the dropdown to get it to open)

http://plnkr.co/edit/SuaxVHxf84QG8KFFbvhY?p=preview

cleon26 avatar Nov 09 '16 21:11 cleon26

The problem manifests if at least two dropdowns are in the same container - in this case, both are using append-to-body, so they have the same parent element.

This would require us to use a multimap to fix this, as we would need to verify that there are no elements in the particular container before trying to remove the class.

wesleycho avatar Nov 29 '16 08:11 wesleycho

@cleon26 did you devise a workaround for this issue? I'm experiencing the same problem

ghost avatar Nov 28 '17 19:11 ghost

Sadly no.

cleon26 avatar Nov 29 '17 01:11 cleon26

@cleon26 I just ended up using ng-click on the same element

ghost avatar Nov 29 '17 19:11 ghost

As a workaround, you can bind is-open to property with getter and setter and perform required action in setter instead of on-toggle

levenleven avatar Jan 04 '18 07:01 levenleven

Thanks for the workaround @levenleven, that works perfectly!

codyjs avatar Jan 18 '18 21:01 codyjs