Resolve different attribute setters when binding elements.

This commit is contained in:
Matt Kocubinski 2014-11-18 16:50:34 -05:00
parent 0a36257baf
commit 21d42e9327

View file

@ -305,6 +305,18 @@
attr-value node-state)
(set-fn element attr-name attr-value)))
(defn get-attr-setter [element attr-name]
(cond
(identical? "data-state" attr-name)
set-data-state!
(and (identical? (. element -type) "checkbox") (identical? attr-name "checked"))
(fn [node attr-name attr-value]
(set! (. node -checked) (true? attr-value)))
:default
set-attr!))
(defn bind-attr! [element attr-name attr-value node-state]
(let [attr-name (name attr-name)]
(cond
@ -314,14 +326,12 @@
(doseq [[p v] attr-value]
(bind-style-prop! element p v node-state)))
(identical? "data-state" attr-name)
(bind-prop-attr! set-data-state! element attr-name attr-value node-state)
(identical? 0 (.indexOf attr-name "on-"))
(listen! element (.substring attr-name 3) attr-value)
:default
(bind-prop-attr! set-attr! element attr-name attr-value node-state))))
(bind-prop-attr! (get-attr-setter element attr-name)
element attr-name attr-value node-state))))
(defn- unbind-attr!* [node-state prefix attr-name]
(let [attr-key (str "-" prefix attr-name)]