有条件地在deftemplate宏内显示内容(Clojure - Enlive)

时间:2017-07-03 18:29:47

标签: if-statement clojure macros enlive

到目前为止,我已经设法弄清楚如何使用clone-for复制div,但我还没有找到一个有条件地应用转换的函数,而在deftemplate宏中。

(deftemplate threads "thread.html" [xs]
  [:div.entry] ;hook to a div
  (clone-for [x xs] ;for each in the array passed in
      (if (contains? x :picture) ;if picture in object
        ([:div.entry :> :img] (set-attr :src (:picture x))) ;show picture
        ([:div.entry] (set-attr :style "display:none;"))) ;else hide element
      ;do more things here
      ))

(threads [{:picture 'link goes here'},{},...])

返回

java.lang.IllegalArgumentException: Key must be integer

我想知道是否有更多有经验的人可以提供帮助吗?我不确定以下内容应该写成什么。

  (if (contains? x :picture) ;if picture in object
        ([:div.entry :> :img] (set-attr :src (:picture x))) ;show picture
        ([:div.entry] (set-attr :style "display:none;"))) ;else hide element

编辑:根据艾伦的建议,我已经评论并删除了与我的问题无关的代码。

0 个答案:

没有答案