#html5 #jade #pug
Есть блок с svg и нужно менять содержимое в зависимости от переменной, код:
mixin container(svg)
.logo-box
if svg == first
svg.class__first
else if svg === second
svg.class__second
else if svg === third
svg.class__third
else
svg.class__fourth
+container(first)
+container(second)
+container(third)
Проблема заключается в том, что неважно какое значение я пишу в миксине container()
всегда отображается svg.class__first?
Ответы
Ответ 1
Синтаксис pug, вроде как, гласит что нужны кавычки. mixin container(svg) .logo-box if svg=='first' svg.class__first else if svg=='second' svg.class__second else if svg=='third' svg.class__third else svg.class__fourth +container('first') +container('second') +container('third') Пример на CodePen (View Compiled HTML)Ответ 2
Небольшое дополнение к соседнему ответу. Код в pug является обычным кодом javascript. Без кавычек first, second, third считаются переменными и, так как они нигде не объявлены, их значением будет undefined. Убедиться в этом можно добавив следующее условие: if(typeof(first) == 'undefined') +container(first) И в этом случае будет выведено всего два блока. Так как все переменные равны undefined, и передаются тоже, то вполне работает равенство undefined === undefined. Для исправления можно воспользоваться решением из соседнего ответа: отказаться от переменных и использовать строки. Либо объявить переменные и присвоить им нужные значения.
Комментариев нет:
Отправить комментарий