在Clojurescript Dommy中隐藏一个元素

我试图隐藏ClojureScript中的一个元素,更具体地说是Dommy库.这是我到目前为止所得到的:

ClojureScript:

(ns fucking_about                                                                  
  (:require                                                                        
    [dommy.utils :as utils]                                                        
    [dommy.core :as dommy])                                                        
  (:use-macros                                                                     
    [dommy.macros :only [node sel sel1]]))

(map dommy/toggle! (sel :.hide))

HTML:

<html>
<head><title></title></head>
<body>
    <ul>
        <li class="show">Derp</li>
        <li class="hide">Herp</li>
        <li class="show">ies!</li>
    </ul>
    <script type="text/javascript" src="script.js"></script>
</body>
</html>

但是在浏览器中打开网站时我没有得到任何结果,我不明白为什么:<我在Github页面之外找不到关于ClojureScript的任何文档.

最佳答案
问题是map返回一个懒惰的元素序列.懒惰的序列是你可以得到的某种未实现的承诺.您希望序列产生一些副作用.为了使它工作,你只需要实现它.

问题是微不足道的.你有两个选择:

1)使用doall函数实现你的懒惰序列,如下所示:

(doall (map dommy/toggle! (sel :.hide)))

这正是doall的目标:遍历整个序列并强制任何可能的效果.

2)使用剂量q,这意味着产生副作用,如:

(doseq [el (sel :.hide)]
    (dommy/toggle! el))

就这样!两种方式都应该得到相同的结果.

还有其他问题吗?

转载注明原文:在Clojurescript Dommy中隐藏一个元素 - 代码日志