Вопрос

Я пытаюсь скрыть элемент в ClojureScript, более конкретно Домми библиотека.Это то, что у меня пока получилось:

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>

Но я не получаю никаких результатов при открытии сайта в браузере, и я понятия не имею, почему :< и я не могу найти никакой документации по ClojureScript за пределами страницы Github.

Это было полезно?

Решение

Дело в том, что map возвращает отложенную последовательность элементов.Ленивая последовательность - это своего рода нереализованное обещание того, что вы можете получить.Вы хотите, чтобы ваша последовательность вызывала какие-то побочные эффекты.Чтобы это сработало, вам просто нужно это осознать.

Проблема тривиальна.У вас есть два варианта:

1) Реализуйте свою ленивую последовательность, используя doall функция, подобная этой:

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

Именно это и является целью doall:пройдитесь по всей последовательности и примените все возможные эффекты.

2) Использование doseq который предназначен для создания побочного эффекта, подобного этому:

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

И это все!В обоих случаях вы должны получить одинаковый результат.

Еще есть вопросы?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top