TimLee
@TimLee

Почему не работает интерполяция?

Файл icon:
mixin icon(iconName)
  svg&attributes(attributes)
    use(xlink:href='##{iconName}')


Файл menu:
include ../icon/icon

mixin menu(menu)
  nav.menu
    each item in menu
      a(href='##{item[0]}').menu__item= item[0]
      +icon('#{item[1]}').menu__icon


Файл header:
include ../menu/menu

mixin header()
  header
    .menu
      +menu(
        [
          ["Home", "menu-home"],
          ["About", "menu-user"],
          ["Contact", "menu-email"]
        ]
      )


Итог:
<nav class="menu"> 
  <a href="#Home" class="menu__item">Home</a>
  <svg class="menu__icon">
    <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="##{item[1]}"></use>
  </svg>
  <a href="#About" class="menu__item">About</a>
  <svg class="menu__icon">
    <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="##{item[1]}"></use>
  </svg>
  <a href="#Contact" class="menu__item">Contact</a>
  <svg class="menu__icon">
    <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="##{item[1]}"></use>
  </svg>
</nav>

Почему интерполяция в svg элементе не срабатывает? Где я ошибся?
  • Вопрос задан
  • 566 просмотров
Решения вопроса 1
При передаче параметра в миксин его не нужно интерполировать, просто передать значение переменной:
mixin icon(iconName)
  svg&attributes(attributes)
    use(xlink:href='##{iconName}')

mixin menu(menu)
  nav.menu
    each item in menu
      a(href='##{item[0]}').menu__item= item[0]
      +icon(item[1]).menu__icon

mixin header()
  header
    .menu
      +menu(
        [
          ["Home", "menu-home"],
          ["About", "menu-user"],
          ["Contact", "menu-email"]
        ]
      )

+header
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы