bergie / hallo

Simple rich text editor (contentEditable) for jQuery UI
http://hallojs.org/
MIT License
2.43k stars 316 forks source link

"halloactivated" event handler isn't unhooked on destroy() #258

Open bcdickinson opened 7 years ago

bcdickinson commented 7 years ago

In hallo's _create method, there's a one-time event handler wired up to "halloactivated":

@element.one 'halloactivated', =>
   # We will populate the toolbar the first time this
   # editable is activated. This will make multiple
   # Hallo instances on same page load much faster
   @_prepareToolbar()

If you destroy the widget before it's been activated and then reinitialise it with a different set of plugins you get an error when the widget is first activated thrown from the handler whose set of plugins no longer matches`:

$(myElement).hallo({ plugins: { halloformat: {} });
$(myElement).hallo('destroy');
$(myElement).hallo({ plugins: { hallolists: {} });
$(myElement).click();
// Uncaught Error: Plugin halloformat not found

I'm just manually calling $(myElement).off('halloactivated') as a workaround for now.