在ClojureScript中,一次设置一个javascript对象的多个属性



我使用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

最新更新