Om supports multiple roots obviating the need for a parent. Is there any reason to not put all modals into a different root? As far as communication seems like you could coordinate events via a :shared channel.
HTH, David On Tue, Aug 26, 2014 at 11:03 AM, Ryan Brush <[email protected]> wrote: > Hello all, > > I'd like to improve on a simple pattern for reusable modals in Om. The > example code linked below at [1] works, displaying a person details modal as > expected. However, it has some downsides. Specifically, the > "person-details-modal" component must be given the state of the higher-level > component that creates it, and it must know the key in which its state exists > so it can update it. > > We can work around this if we pass "on close" callbacks to the modal > component, and remove its state in the parent. But that leaks details in the > opposite direction, where the caller of a modal has to know how to close it. > > Can we make this code cleaner? Realizing this could be a challenge in the > context of Om's strong state management, it would be nice to write something > like this: > > (defn show-person-details-modal! [person-details] ...) > > that could be attached to the on-click event of a parent component. It's not > clear to me how we could achieve that, or if it's possible. Any other > suggestions to work around the above drawbacks are also welcome. I'd love to > see how this is handled in existing Om-based projects. > > If anyone wants to experiment with this example, simply cloning the project > below and launching "lein run" will open a page with this example. > > Many thanks! > > -Ryan > > [1] > https://github.com/rbrush/cljs-playground/blob/master/src/main/clojurescript/toomuchcode/playground/modal.cljs > > -- > Note that posts from new members are moderated - please be patient with your > first post. > --- > You received this message because you are subscribed to the Google Groups > "ClojureScript" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/clojurescript. -- Note that posts from new members are moderated - please be patient with your first post. --- You received this message because you are subscribed to the Google Groups "ClojureScript" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/clojurescript.
