I’ve used a variation on Dave’s solution for a similar problem: I have the
parent component (in this case, elements) set :selected true on the map
representing the selected one before passing those maps to build-all.

Also, I store which element is selected (actually, an id representing which
is selected) in the app state atom, in a top-level key. Storing it in the
state, as Dave does, works just as well.

Peter
​

On Sun, Oct 5, 2014 at 5:13 AM, Dave Della Costa <[email protected]>
wrote:

> Hi Andreas,
>
> Seems like it will be hard to do this without passing a channel around,
> but I don't think it's that clunky. Here is one approach:
>
>
> https://github.com/ddellacosta/om-cookbook/blob/master/complex-selection/src/core.cljs
>
> (You can get that going by cloning that repo and running lein cljsbuild
> once complex-selection from the repo root, and loading up the index.html
> file from that code example's directory.)
>
> I'm not sure if it is exactly what you need--if you submit a full
> example or provide the code you already have (always good practice when
> asking questions on the list), it may be easier to give you some more
> useful suggestions.
>
> DD
>
> (2014/10/05 2:44), Andreas Liljeqvist wrote:
> > Say that I want to model a table of things. Something like this:
> > [{:elements [1 2 3]}
> >  {:elements [4 5 6]}]
> >
> > I want to select elements by :onClick.
> > Whenever I select an element, all other elements should become
> deselected.
> > Also I want to display some info about the selected element in a
> grandparent.
> >
> > How would this be best accomplished?
> > For selecting I just do something like (fn [_] (om/set-state! owner
> :selected true)
> >
> > I have got four levels of om-functions
> >
> > element-view
> >
> > row-view
> >
> > table-view     selected-view
> >
> > root
> >
> > I could pass a channel from the root, but it feels clunky to pass it
> through several levels when it only going to be used in element-view and
> selected-view.
> >
>
> --
> 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.
>



-- 
Visuals: http://youtube.com/peeja
Words: http://blog.peeja.com/
Conversation: (603) 548-1203

-- 
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.

Reply via email to