Before I start posting code, I want to describe my logic to make sure I'm on 
the right path.

I show a table scheduling lectures.  Each row (reagent component) has a date, a 
department, a speaker, and a topic.  Each of these (except date) is a dropdown, 
whose list of possible values is dependent on the select before it.  Department 
determines possible speakers, and speaker determines possible topics.

At the end of each row is a bootstrap button which populates a ratom with the 
state of the current row, then shows a modal.  That modal should allow each of 
those 3 selects to be changed, and update the dependent lists with possible 
selections.  It's state is determined by the ratom populated from the table row.

The issue I am having is the currently selected item when moving from one row 
to another.  So if I edit a row, change the select values, close the dialog, 
then edit a different row, one of the select components is still showing values 
from the previous row.

Example:
Row 1: 1/1/2014 Department A Speaker 1 Topic Foo
Row 2: 2/1/2014 Department B Speaker 2 Topic Bar

After using the modal to change a value in row 1, the doing the same in row 2, 
the 'speaker' selection reflects the one from row 1, not row 2.

Here's some code:

(reset! selected-item-out selected-item-in)
[:select {:id id
          :value @selected-item-out
          :on-change #(update-select-component-state selected-item-out % 
modal-map-atom map-of-maps k)}

Here's what doesn't make sense:

When I output the value of @selected-item-out, it reflects what the select 
component *should* display as the selected value after it is updated from 
selected-item-in.  Yet the select shows the previous value when it is rendered.

According to the HTML5 spec, IIRC, setting 'value' on a select UI item is 
preferred to the 'selected' property on an option.

Is there a better way to (a) update the currently selected item in the list or 
(b) delete and replace the entire component to force the correct selection to 
appear?

-- 
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 clojurescript+unsubscr...@googlegroups.com.
To post to this group, send email to clojurescript@googlegroups.com.
Visit this group at http://groups.google.com/group/clojurescript.

Reply via email to