Adding a mixin to a class in a plugin?


(Shoshana Berleant) #1

I need to modify a javascript controller (create-account). If I were writing it from scratch, I’d add a mixin called something like (FooValidation), the same way the mixins PasswordValidation and UsernameValidation are applied (discourse/create-account.js.es6 at f03b6bd8c925163b41b9e33b39484d102dbaee44 · discourse/discourse · GitHub). I can’t figure out how, though.

I could just add the relevant properties/methods to the create account controller using PluginApi.modifyClass, but that doesn’t feel right, especially seeing as I’ll want to reuse the mixin.

What’s the best way to achieve this?


#2

I believe the modifyClass method accepts a mixin as an argument, so I’d try something like this:

api.modifyClass("controller:create-account", FooValidation);

(Shoshana Berleant) #3

Ah you’re right, modifyClass calls Ember’s reopen, which can take mixins as an argument. I couldn’t get it to work at first but I got it! Thanks!