Pass variables to base layout from extending pug/jade template

情到浓时终转凉″ 提交于 2019-12-03 14:48:48

问题


I would like to set a class on the body tag by declaring a variable in a template that extends a base layout.

When I try, the body_class variable is undefined in the layout.

It appears the layout is executed before the extending template, or they are executed in different scopes or something.

Is there another way? Would a mixin work here?

_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

回答1:


Ah ha! Figured it out.

Create a block at the top of the base layout and add your variables in there.

_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:

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


来源:https://stackoverflow.com/questions/29089925/pass-variables-to-base-layout-from-extending-pug-jade-template

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!