我使用doto在ClojureScript中分配Dom元素的属性,如下所示:
(let [img
(doto (.createElement js/document "img")
(set! -src "bunny-512.png")
(set! -height 64)
(set! -width 64))]
;...
)
有没有办法通过属性+值的映射一次设置所有属性?
我在想:
(let [img (.createElement js/document "img")]
(set! img {:src "bunny-512.png" :height 64 :width 64})
但这不起作用。。。
试试这样的东西:
(defn set-props [o property-map]
(doseq [[k v] property-map]
(.setAttribute o (name k) v)))
测试:
(def mg (.createElement js/document "img"))
cljs.user=> (set-props mg {:src "foo.png" :height 128 :width 128})
nil
cljs.user=> (.-src mg)
".../foo.png"
cljs.user=> (.-width mg)
128
cljs.user=> (.-height mg)
128