Hi everyone, I've been playing with Om the past few days both due to my own interest in Om itself as well as my long-standing desire to learn ClojureScript. With that in mind, I'm relatively new to both.
After following the Om "Basic Tutorial" I set about creating my own demo app (a drag-and-drop rank-voting UI). One of the concepts I saw introduced in the tutorial was using Core.async channels to deal with events and I initially copied that paradigm into my app. Within a few minutes, I was realizing that I must be going down an anti-pattern path. One of the things I like best about Om so far is that it seems to encourage me to always be thinking about pieces of functionality as actual "components" rather than the traditional MVC paradigm. As I went along, I realized I was passing a channel down (via :init-state) through 4+ levels of component nesting. Any time I have to write the same block of code more than twice, I question it. After thinking on it a while, I assume it's probably better to pass the right cursor and modify the cursor directly from the interior components. In my case, my hierarchy looked like: items-view item-view item-detail vote-button ...with the bottom 3 all sharing the same cursor. That said, I wanted to ask around to folks using Om what the "idiomatic" approach is. I quickly started to think that the Basic Tutorial was likely introducing Core.async to help people get familiar with ClojureScript and not anticipating the anti-pattern it was establishing. But, since I don't know idiomatic approaches yet; I thought I would ask if there was something I'm missing in terms of using async channels more effectively. Thanks for the advice! Brian -- 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.
