Can you provide a little more code? Specifically, the render function of
the events parent. I assume you are doing something like (om/build-all
event-component (:events factory))

Is there a unique id in each event by any chance? Presumably what is
happening is that react doesn't properly detect which event was actually
removed - only that one of them was removed (I've seen this a few times...)
so if you provide what React calls a "key" then it can use this to
disambiguate and correctly render the list. For example:

If your events look like this {:id 3 :other :data}

Then you can do something like this:

(om/build-all event-component all-events {*:key :id*})

If you don't have a field in the event that can be used as a key (a number,
string or keyword that is unique across all events), then you could try
something like this instead:

(map-indexed
  (fn [idx event]
    (build event-component event {*:react-key idx*}))
  all-events)

https://github.com/swannodette/om/wiki/Documentation#build

On 18 October 2014 14:33, Andreas Liljeqvist <[email protected]> wrote:

> I have a vector of events in my factory-row.
>
> An event can be selected by clicking on it:
>
> (merge {:onClick #(om/set-state! owner :selected true)}
>                                     (when selected {:style {:background
> "white"}}))
>
> If it is selected it will display a white background.
> This works fine.
>
> Problem is when I delete an item.
> 1. Select the first item on the row (turns white)
> 2. Delete the first item on the row (item disappears but the second item
> turns white)
>
> (will-mount [_]
>       (let [delete (om/get-state owner :delete)]
>         (go (loop []
>               (let [event (<! delete)]
>                 (om/transact! factory :events
>                               (fn [xs] (vec (remove (partial = event)
> xs))))
>                 (recur))))))
>
>
> Why is local-state propagated to the next item in the list?
>
> Thanks
>
> --
> 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.

Reply via email to