как передавать переменные между шаблонами jade



Я использую шаблон в качестве базы и хочу, чтобы он знал о некоторых переменных, установленных на странице, которая его использует...



: шаблон.Джейд

vars = vars || {some:"variables"}
!!! 5
head
title vars.some


: страницы.Джейд

vars = {some:"things"} //- this does not get used from within template.jade
extends template


мне нужна скомпилированная страница.Джейд, чтобы иметь название "вещи"

590   5  

5 ответов:

Я нашел решение здесь

пройти блок с переменными

шаблон.Джейд:

!!!
html
  block vars
  head
      title #{pageTitle} - default www title
  body

страница.Джейд

extends template
block vars
  - var pageTitle = 'Home'

Вы можете использовать блоки:

шаблон.Джейд:

!!! 5
head
    block title
        title variables

страница.Джейд:

extends template
block title
    title things

еще вы должны определить переменные в вашем скрипте (например, express). Насколько я знаю, переменные могут передаваться только через includes, но не вверх по макету (шаблону.нефрит в вашем случае).

Я думал, что блоки не будут работать для меня, потому что мне нужно было использовать переменную в нескольких местах.

// base.jade
pageTitleVar = "Parent's Title"
!!!
title !{pageTitleVar}
h1 !{pageTitleVar}

оказывается, вы можете фактически указать один и тот же блок дважды в Родительском шаблоне, и все, что дочерний шаблон передает ему, дублируется.

// base.jade
pageTitleVar = "Parent's Title"
!!!
title
  block pageTitleBlock
    !{pageTitleVar}
h1
  block pageTitleBlock
    !{pageTitleVar}

// child.jade
extends base
pageTitleVar = "Child's Title"
block pageTitleBlock
   !{pageTitleVar}

блоки FTW

отличное и прокомментированное решение для добавления заголовка следующим образом:
"Мой Проект-Страница".

Или просто так:
"Мой Проект"

шаблон: шаблон.Джейд

doctype 5
html(lang="en")
head
    //- setting the page title to be dynamic
    block vars
        - var defaultTitle = "My Project"
        - var pageTitle = pageTitle
    title #{defaultTitle}#{pageTitle}

страница: страница.Джейд

extends base
//- custom page title
block append vars
    pageTitle = " - The Page"

Как насчет использования шаблон включает в себя?

// vars.jade
- var name = "Chris"
#{ nick = "StackOverflow"  }


// page.jade
doctype html
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
  body
    h1= title
    include vars
    p Welcome to #{title} #{name} #{nick}

Comments

    Ничего не найдено.