inkShio
@inkShio

Как реализовать несколько блоков в mixin — pug?

Есть такой миксин для кнопки
- var blocks={};

mixin set(key)
  - blocks[key] = this.block

mixin A(buttonClass, buttonText, disabled)
  button.button(class= buttonClass, disabled= disabled)
    span
      if block
        block
        - blocks.left()
        | #{buttonText}
        - blocks.right()
      else
        | #{buttonText}

+A("button_small button_filled", "Кнопка", false)
  +set('left')
    p l
  +set('right')
    p r


Этот миксин рабочий, но работает немного не так, как хотелось бы. Не могу сообразить как поправить.
Задумка такая что set('left') - это для вставки в кнопку иконку слева, +set('right') - иконка с права.
Если я пишу +set('left') и +set('right') как примере то все ок. Но если я пишу что то одно, то ошибка.

  • Вопрос задан
  • 261 просмотр
Решения вопроса 1
0xD34F
@0xD34F
если я пишу что то одно, то ошибка

Так вы проверяйте перед вызовом функции, что она есть. Вместо

- blocks.left()

будет

-
  if (blocks.left) {
    blocks.left()
  }

Ну или покороче можно: - blocks.left && blocks.left().
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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