如何在Clojurescript中设置DOM元素的属性?

Zub*_*air 6 clojurescript

我希望使用Clojurescript设置"input"元素的"value"属性,但是我在goog.com中遇到了setProperties的语法问题.有没有人有一个工作的例子?

更新------

这似乎有效:

(goog.dom.setProperties 
 (goog.dom/getElement "element-name")
 (clj->js {:value "text"}))
Run Code Online (Sandbox Code Playgroud)

Mic*_*zyk 8

如果您需要创建一次性JS对象以与JS API一起使用,您可以直接使用 js-obj:

(js-obj "value" "text")
;; produces {"value": "text"} in the compiled output
Run Code Online (Sandbox Code Playgroud)

当然如果你已经有一个带有相应条目的ClojureScript地图,clj->js会更方便.

更重要的是,您可能需要考虑切换到ClojureScript库以进行DOM操作.有几个可用:

  • Luke VanderHart的Domina可能是第一个,由Enfocus(下面列出)和Pedestal使用 ;

  • Prismatic的dommy,由于它自身的优点以及Prismatic博客上有关它的非常有趣的博客文章而引人注目(它可以作为宏的好处的一个很好的介绍:第一个,第二个,第三个);

  • Creighton Kirkendall的Enfocus,简而言之,是一个类似Enlive的ClojureScript库,非常棒;

  • Kevin Lynagh的Singult,这是一个针对ClojureScript的Hiccup风格的库,具有很酷的功能,可以合并DOM的更改,而不是从头开始重新渲染.