> It looks like this is a gap in kioo. I support the react events in listen
> but not the om events. I need to create a wrap transform or add the om
> protocol events to listen transform. I will try to put something together
> tonight and post an example of how to use it.
I look forward to trying it out.
One other question/problem while I'm doing this, I'm using the code you
originally posted (custom-transform) and it works except for one problem; when
I type any value, the cursor jumps to the end of the input field after the
first character, so if you back arrow through the text and type something,
after the first character, you're editing the end of the field.
So I'm doing:
(def form-data (atom {:name "your name" :address "an address"}))
;; odd i have to use local state and global state and keep them in sync
manually...
(defn handle-change [e data edit-key owner]
(om/transact! data edit-key (fn [_] (.. e -target -value)))
(om/set-state! owner edit-key (.. e -target -value)))
(defn custom-transform [field data owner]
(fn [node]
(-> node
#_(assoc-in [:attrs :value] (om/get-state owner field))
(assoc-in [:attrs :onChange] #(handle-change % data field owner)))))
(defn form-app [data owner]
(reify
om/IInitState
(init-state [_]
{:name (:name data)
:address (:address data)})
om/IRenderState
(render-state [_ state]
(kioo/component
"public/fragments/f1.html" [:#header]
{[:input#name]
(custom-transform :name data owner)}))))
(om/root form-app form-data {:target (. js/document (getElementById "main"))})
This appears to be because of the call to setting the :value in the
custom-transform.
Without it, the cursor editing behaves correctly, but then I don't know how to
initialise the field so it shows the initial value.
What's the best way to initialise a field to stop this behaviour?
I'm going to try adding an initialised flag in the component state and only run
the [:attrs :value] if it's unset, which should initialise it, just wondered if
there was a better way?
--
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.