Jade: если утверждения и вложенность
Указать этот псевдоничный серверный код
if(isFixed) {
<div class="fixed">
} else {
<div>
}
<p>Inner element</p>
</div>
Я пытаюсь сделать это в нефритовом, но...
- if(mode === 'fixed') {
div#tabbar
- }
p ...I cannot get this to be an inner element :(
Он всегда делает это следующим образом: </div>
закрыто:
<div id="tabbar"></div><p>I want this inside of the div</p>
Я испортил отступ?
Спасибо!
Ответы
Ответ 1
Вам нужно отделить поток управления от шаблона. Попробуйте следующее:
divClass = null
if isFixed
divClass = "fixed"
div(class=divClass)
p inner element
Что, в свою очередь, может предложить разложить параметр isFixed в фактический параметр divClass для передачи. Но это зависит от вашего оставшегося кода/шаблона, конечно.
В качестве альтернативы попробуйте mixin:
mixin content
p inner element
if (isFixed)
div(class="test")
mixin content
else
div(class="other")
mixin content
Ответ 2
Я бы подошел к этому с тройным (или полностью выписанным условным или методом), чтобы определить атрибут класса. Это позволяет держать div в одной строке и сохранять отступы, как это было бы для любого другого элемента:
div(class="#{ isFixed ? 'fixed' : '' }")
p Inner Element
Ответ 3
Jade, похоже, не имеет встроенного решения для запуска и завершения тегов, кроме использования символа "pipe" для рендеринга обычного текста.
- if(mode === 'fixed') {
| <div id="tabbar">
- }
| <p>I cannot get this to be an inner element :(</p>
- if(mode === 'fixed') {
| </div>
- }
Меньше загроможденное решение -
div(class=(isFixed) ? 'fixed' : '')
p inner element