Standardwerte in Jade-Templates

Folgendes Problem:
Ich habe ein Jade-Layout und ein Jade-Template. Ich möchte den Titel-Tag beim Rendern der Seite bestimmen. Das Layout-Template sah so aus (Funktioniert nicht!):

!!! strict
html
  head
    title #{title}
  body
    #kopfzeile Guten Tag!
    #inhalt!= body

Dies funktionierte auch, wenn man es wie folgt aus Express aufrief:

res.render('template.jade', {title: "Mein Titel"});

Nun wollte ich an manchen Stellen das Attribut einfach nicht verwenden und bekam eine Fehlermeldung.
title is not defined
Ich hab mich dann im Git-Repository umgesehen und diesen Eintrag gefunden.
Die Lösung ist, statt direkt auf die Eigenschaft zuzugreifen das locals-Objekt zu benutzen:

!!! strict
html
  head
    title= (locals.title || "Standardtitel")
  body
    #kopfzeile Guten Tag!
    #inhalt!= body

Dies kann nun so aufgerufen werden:

res.render('template.jade');

Oder mit gesetztem Titel:

res.render('template.jade', {locals:{title:"Mein Titel"}});
Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s