J'utilise un modèle comme base et je veux qu'il soit au courant de certaines variables définies dans la page qui l'utilise ...
Fichier: template.jade
vars = vars || {some:"variables"}
!!! 5
head
title vars.some
Fichier: page.jade
vars = {some:"things"} //- this does not get used from within template.jade
extends template
Je veux que le fichier compilé page.jade ait un titre "choses"
Je trouve la solution ici
passer un bloc avec des variables
template.jade:
!!!
html
block vars
head
title #{pageTitle} - default www title
body
page.jade
extends template
block vars
- var pageTitle = 'Home'
Vous pouvez utiliser des blocs:
template.jade:
!!! 5
head
block title
title variables
page.jade:
extends template
block title
title things
Sinon, vous devez définir les variables dans votre script (par exemple express). Pour autant que je sache, les variables ne peuvent être transmises que via les inclusions, mais pas vers le haut à la mise en page (template.jade dans votre cas).
Que diriez-vous d'utiliser le modèle comprend ?
// 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}
Une excellente solution et commentée pour ajouter un titre comme celui-ci:
"Mon projet - La page".
Ou juste ceci:
"Mon projet"
modèle: template.jade
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}
une page: page.jade
extends base
//- custom page title
block append vars
pageTitle = " - The Page"
Je pensais que les blocs ne fonctionneraient pas pour moi car j'avais besoin d'utiliser la variable à plusieurs endroits.
// base.jade
pageTitleVar = "Parent's Title"
!!!
title !{pageTitleVar}
h1 !{pageTitleVar}
Il s'avère que vous pouvez réellement spécifier deux fois le même bloc dans le modèle parent et tout ce que le modèle enfant lui transmet est dupliqué.
// 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}
Blocs FTW