2015-03-17 4 views
17

Ich möchte eine Klasse für das Body-Tag festlegen, indem eine Variable in einer Vorlage deklariert, die ein Basislayout erweitert. Wenn ich es versuche, ist die body_class Variable undefined im Layout.Übergeben Sie Variablen an Basislayout von Erweiterung Mug/Jade-Vorlage

Es scheint, das Layout wird vor der Erweiterung Vorlage ausgeführt, oder sie werden in anderen Bereichen oder etwas ausgeführt.

Gibt es einen anderen Weg? Würde ein Mixin hier arbeiten?

_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 
+0

Ähnlich: http://stackoverflow.com/questions/15035624/jade-templating-variable- Scope-in-Includes –

Antwort

38

Ah ha! Herausgefunden.

Erstellen Sie einen Block am oberen Rand des Basislayouts und fügen Sie dort Ihre Variablen hinzu.

_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 
+2

danke Sir, genau das, was ich gesucht habe. Also ist der Umfang auf der Root-Vorlage erweitert? – undefinederror

+2

Sie haben gerade meine geistige Gesundheit gerettet. Vielen Dank. –

+3

Dies ist ein Strich vor der Anweisung var fehlt. Es sollte '- var body_class = 'i-am-the-home-page' sein. Andernfalls wird der Code nicht als JavaScript kompiliert. – nomad