Nascondere un elemento nel clojecript dmmy
-
23-12-2019 - |
Domanda
Sto cercando di nascondere un elemento nel clojursept in modo più specifico del dommy libreria.Questo è quello che sono arrivato finora:
CLOJUSCRITT:
(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>
.
Ma non ottengo risultati quando si apre il sito in un browser e non ho idea del perché:
Soluzione
La cosa è che map
restituisce una pigra sequenza di elementi.La sequenza pigra è una specie di promessa non realistica di ciò che puoi ottenere.Vuoi che la tua sequenza produca alcuni effetti collaterali.Per farlo funzionare devi solo renderlo conto.
Il problema è banale.Hai due scelte:
1) Realizza la tua sequenza pigra usando la funzione doall
, in questo modo:
(doall (map dommy/toggle! (sel :.hide)))
.
Questo è esattamente l'obiettivo di doall
: cammina attraverso l'intera sequenza e forzare qualsiasi effetto possibile.
2) Utilizzare doseq
che è destinato a produrre un effetto collaterale, in questo modo:
(doseq [el (sel :.hide)]
(dommy/toggle! el))
.
Ed è tutto!Entrambi i modi in cui dovresti ottenere lo stesso risultato.
Altre domande?