headerElement (goog.dom/createDom
"div" (.strobj {"style" "background-color:#EEE"})
(:title note))
{...}创建一个Clojurescript地图。我需要一个javascript对象/ hash。
如何进行这种微不足道的转换?
答案 0 :(得分:11)
您还可以使用#js
reader literal来创建JavaScript对象或数组。
你可以写:
(def test1 #js {:foo 1 :bar false})
创建JavaScript代码:
namespace.test1 = {"bar":false, "foo":1};
对于数组:
(def test2 #js [1 2 3 false nil true])
创建:
namespace.test2 = [1, 2, 3, false, null, true];
您还可以使用clj->js
功能:
(clj->js :style "background-color:#EEE")
它的好处在于它以递归方式工作 - 转换嵌套数据结构。
关于它我做了post(如果我可以自己做广告)
答案 1 :(得分:3)
cljs.core / js-obj应该对此有所帮助。请注意,它需要正常的数组/列表(而不是地图)。
headerElement (goog.dom/createDom
"div" (js-obj "style" "background-color:#EEE")
(:title note))
答案 2 :(得分:1)
此宏可让您将js-obj
与关键字一起使用:
<强>宏强>
(defmacro obj [& key-values]
(let [obj-def (apply concat (map #(list (name (first %)) (last %))
(partition 2 key-values)))]
`(cljs.core/js-obj ~@obj-def)
))
<强>用法强>
(obj
:key someVal
:otherKey (fn [a b] a)
)