在Clojurescript Dommy中隐藏一个元素

3
我正在尝试隐藏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 文档。
1个回答

10

问题在于map返回一个惰性元素序列。惰性序列是您可以获得的某种未实现的承诺。您希望序列产生一些副作用。要使其工作,您只需要实现它。

问题很简单。您有两个选择:

1)使用doall函数实现您的惰性序列,像这样:

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

这正是doall的目标:遍历整个序列并强制执行任何可能的影响。

2) 使用doseq,它旨在产生副作用,像这样:

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

就这些了!两种方法都应该得到相同的结果。

还有其他问题吗?


1
啊!非常感谢 @yonki - Kristjan Oddsson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接