Это хороший случай для использования mixin :
- var parsedValue = 2
mixin option
option(selected= (attributes.value == parsedValue))&attributes(attributes)
if block
block
select
+option(label='zero', value='0') Option 0
+option(label='first', value='1') Option 1
+option(label='second', value='2') Option 2
+option(label='third', value='3') Option 3
Это беспараметрический миксин, который использует аргумент неявный attributes
.Какие бы атрибуты вы ни указали при вызове mixin, они будут отражены в отображаемом элементе option
.
Кроме того, он условно устанавливает атрибут selected
, если значение атрибута value
соответствует переменной parsedValue
.
Примечание. Хотя можно ожидать, что выбранные option
будут отображаться с selected="true"
, а другие option
элементы будут отображаться с selected="false"
, Pug достаточно умен с логическими атрибутами , чтобы очистить это и использовать selected="selected"
или вообще пропустить атрибут.
Результирующий HTML:
<select>
<option label="zero" value="0">Option 0</option>
<option label="first" value="1">Option 1</option>
<option selected="selected" label="second" value="2">Option 2</option>
<option label="third" value="3">Option 3</option>
</select>