Clojurescript:将cljs映射转换为javascript哈希

10 clojurescript

以下代码段不起作用

     headerElement (goog.dom/createDom
                    "div" (.strobj {"style" "background-color:#EEE"})
                    (:title note))
Run Code Online (Sandbox Code Playgroud)

原因:

{...}创建一个Clojurescript地图.我需要一个javascript对象/哈希.

题:

我如何进行这种微不足道的转换?

Raf*_*jer 11

您还可以使用#jsreader literal创建JavaScript对象或数组.

你可以写:

(def test1 #js {:foo 1 :bar false})
Run Code Online (Sandbox Code Playgroud)

它创建JavaScript代码:

namespace.test1 = {"bar":false, "foo":1};
Run Code Online (Sandbox Code Playgroud)

对于数组:

(def test2 #js [1 2 3 false nil true])
Run Code Online (Sandbox Code Playgroud)

创建:

namespace.test2 = [1, 2, 3, false, null, true];
Run Code Online (Sandbox Code Playgroud)

你也可以使用clj->js功能:

(clj->js :style "background-color:#EEE")
Run Code Online (Sandbox Code Playgroud)

关于它的好处是它以递归方式工作 - 转换嵌套数据结构.

我发了一篇关于它的帖子(如果我可以自己做广告)


小智 3

cljs.core/js-obj 应该对此有所帮助。请注意,它需要普通的数组/列表(而不是地图)。

headerElement (goog.dom/createDom
               "div" (js-obj "style" "background-color:#EEE")
               (:title note))
Run Code Online (Sandbox Code Playgroud)