从扩展的Pug/Jade模板向基础布局传递变量

33

我希望通过在继承基本布局的模板中声明一个变量,为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

home.jade:

var body_class = 'i-am-the-home-page'
extends _layout
block header
    h1 home

类似于:https://dev59.com/vG7Xa4cB1Zd3GeqPuNF9 - Mike Causer
1个回答

87

啊哈!想通了。

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

_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

home.jade:


家.jade:
extends _layout
block variables
    - var body_class = 'i-am-the-home-page'
block header
    h1 home

2
谢谢您先生,这正是我在寻找的。所以范围是在根模板被扩展吗? - undefinederror
3
这里缺少一个 var 语句前面的破折号,正确的写法是 - var body_class = 'i-am-the-home-page'。否则这段代码将无法被编译为 JavaScript。 - nomad
2
我找到了这个链接,其中有实现此功能的示例。我认为它很有帮助 - https://gist.github.com/viktorbezdek/9665226 - Mote Zart
这绝对应该包含在 Pug 的文档中。这不可能是块的显而易见的用法。 - Lazar Ljubenović

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接