从扩展的pug/jade模板将变量传递给基本布局

Mik*_*ser 24 javascript node.js pug

我想通过在扩展基本布局的模板中声明一个变量来在body标签上设置一个类.

当我尝试时,body_class变量undefined在布局中.

看起来布局在扩展模板之前执行,或者它们在不同的范围或其他内容中执行.

还有另外一种方法吗?mixin能在这里工作吗?

_layout.jade:

doctype html
html(lang="en-au")
    head
        meta(charset="utf-8")
        block css
    body(class=(body_class || "it-did-not-work"))
        block header
        block content
        block footer
Run Code Online (Sandbox Code Playgroud)

home.jade:

var body_class = 'i-am-the-home-page'
extends _layout
block header
    h1 home
Run Code Online (Sandbox Code Playgroud)

Mik*_*ser 62

啊哈!弄清楚了.

在基本布局的顶部创建一个块,并在其中添加变量.

_layout.jade:

block variables
doctype html
html(lang="en-au")
    head
        meta(charset="utf-8")
        block css
    body(class=(body_class || "it-did-not-work"))
        block header
        block content
        block footer
Run Code Online (Sandbox Code Playgroud)

home.jade:

extends _layout
block variables
    - var body_class = 'i-am-the-home-page'
block header
    h1 home
Run Code Online (Sandbox Code Playgroud)

  • 这在var语句之前缺少一个破折号.应该是` - var body_class ='i-am-the-home-page'`.否则代码将不会编译为JavaScript. (3认同)
  • 谢谢你,先生,我正在寻找的东西.所以范围是在扩展的根模板上? (2认同)
  • 我找到了这个,其中有如何实际实现这一点的示例。我发现它很有帮助 - https://gist.github.com/viktorbezdek/9665226 (2认同)