Your example looks a bit unusual. Is it incomplete? (Not saying that it's
wrong, just strange)
On Tuesday, May 27, 2014 5:55:53 PM UTC-7, Daniel Kersten wrote:
> I use core.async for this - pass a channel to the child, have the child put
> messages on it when events occur and have the parent modify its own state in
> response to child events.
>
>
> Something like this would work:
>
>
>
>
>
> (defn child [props owner {:keys [ch]}]
>
>
> (reify
> om/IInitState
>
>
> (init-state [_]
>
>
> {:text ""})
>
>
> om/IRenderState
> (render-state [_ {:keys [text editable?]}]
>
>
> (dom/div nil
>
>
> (if editable?
> (dom/input ...)
>
>
> (dom/div nil text))
>
>
> (dom/button #js {:onClick #(async/put! ch :no-edit)}
>
>
> "No Edit")))))
>
>
>
> (defn parent [props owner opts]
>
>
> (reify
> om/IInitState
>
>
> (init-state [_]
>
>
> {:ch (async/chan)
>
>
> :editable? true})
>
>
> om/IWillMount
> (will-mount [_]
>
>
> (async/go-loop []
>
>
> (when-let [value (async/<! (om/get-state owner :ch))]
>
>
> (condp = value
>
>
> :no-edit (om/set-state! owner :editable? false))
>
>
> (recur))))
>
>
> om/IRenderState
> (render-state [_ {:keys [editable? ch]}]
>
>
> (om/build child props {:state {:editable? editable?}
>
>
> :opts ch}))))
>
>
>
>
> In my own code, I always put [topic value] on my channel and have one channel
> shared between all of my components and components can subscribe to various
> topics using async/sub.
>
>
>
>
>
>
>
> On 28 May 2014 01:14, Jamie Orchard-Hays <[email protected]> wrote:
>
>
> I have a component that uses om/build to render an editable section. The
> parent has :editable? local state. Is there a way for the child to set the
> true/false value of this on the parent? So far haven't discovered how this
> might be done.
>
>
>
>
>
> Cheers,
>
>
>
> Jamie
>
>
>
> --
>
> 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.