2013-07-09 45 views
5

我希望使用Clojurescript設置「input」元素的「value」屬性,但我在goog.com中遇到setProperties的語法問題。有沒有人有一個工作的例子?如何在Clojurescript中設置DOM元素的屬性?

更新 ------

這似乎工作:

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

回答

8

如果你需要用JS API的使用創造一次性JS對象,可以如此直接用做js-obj

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

當然,如果你已經有了一個ClojureScript地圖用相應的條目, clj->js會更方便。

更重要的是,您可能需要考慮切換到用於DOM操作的ClojureScript庫。有幾個可供選擇:

  • 盧克VanderHart的Domina,這可能是第一位的,是由Enfocus的使用(如下所示),並Pedestal;

  • 多彩的dommy,值得注意的是由於自身的優點,以及它的非常有趣的博客文章上Prismatic's blog(其可以作爲一個偉大的介紹宏的好處:first onesecond onethird one);

  • Creighton Kirkendall的Enfocus,簡而言之,這是一個類似於ClojureScript的Enlive庫,它很棒;

  • Kevin Lynagh的Singult,它是ClojureScript的一個Hiccup樣式庫,它具有很酷的功能,可以合併DOM中的更改,而不是從頭開始重新渲染。

相關問題