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

时间:2013-07-09 10:13:10

标签: clojurescript

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

更新 ------

这似乎有效:

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

1 个答案:

答案 0 :(得分:8)

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

(js-obj "value" "text")
;; produces {"value": "text"} in the compiled output

当然,如果您已经拥有包含相应条目的ClojureScript地图,clj->js会更方便。

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

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

  • Prismatic's dommy,值得注意的是由于它自身的优点,以及Prismatic's blog上有关它的非常有趣的博客文章(可以作为对宏的好处的一个很好的介绍:{ {3}},first onesecond one);

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

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