Resolve different attribute setters when binding elements.
This commit is contained in:
parent
0a36257baf
commit
21d42e9327
1 changed files with 14 additions and 4 deletions
|
@ -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)]
|
||||
|
|
Loading…
Reference in a new issue