Джейд условные (если/иначе), чтобы добавить класс для div, В встроенный


есть ли способ сделать это встроенным в шаблон jade?

if(typeof fromEdit != 'undefined')
   div#demo.collapse.in
else
   div#demo.collapse

хотел бы сделать эту условную проверку "inline", и результат добавит .in в конец div, если fromEdit существует.

5 60

5 ответов:

это работает:

div#demo.collapse(class=typeof fromEdit === "undefined" ? "" : "in")

попробовать здесь.

Если вы не хотите, чтобы атрибут class добавлялся, когда нет значения, вы можете назначить его неопределенным вместо пустой строки. Вот предыдущий пример, слегка измененный:

div#demo.collapse(class=typeof fromEdit === "undefined" ? undefined : "in")

обновление: также, если вы используете мопс, теперь вы можете добавить столько class= объявления, как вы хотите с различными условиями, и они будут объединены в результирующий атрибут класса. например:

#demo.collapse(class=cond1 && 'class1' class=cond2 && 'class2')

как описано в http://jade-lang.com/reference/attributes/:

атрибут класса [...] Это также может быть сопоставление имен классов объектов с истинными или ложными значениями, что полезно для применения условных классов

задача также может быть выполнена следующим образом:

div#demo.collapse(class={ in: typeof fromEdit != 'undefined' })

хотя это не работает здесь http://naltatis.github.com/jade-syntax-docs/ (я думаю, что они должны что-то обновить), но это работает с jade@1.11.0 .

с мопсом 2 Вы можете использовать следующий синтаксис:

div#demo(class="collapse", class={"in": typeof fromEdit !== 'undefined'}) Home page

подробнее здесь: https://pugjs.org/language/attributes.html

хотя старый вопрос, я считаю, что следующие работы, так как мопс включает в себя обнаружение существования объекта встроенный:

div#demo.collapse(class=fromEdit? 'in':undefined)

Если это не очевидно, это проверяет, является ли fromEdit существует, и если он входит in как класс, в противном случае оставляя пустой класс.