2013-03-29 8 views
13

Sto volendo impostare i miei titoli di pagina nei modelli figlio del layout tramite jade. Non voglio impostarli nelle rotte poiché ciò richiede il riavvio del server. Ecco quello che spero di realizzare:Imposta il titolo della pagina da un modello figlio in Jade

layout.jade:

!!! 5 
    head 
    - var title = title || "Default Title Here" 
    title #{title} 
    // ... 

child.jade:

- var title = "Child Title Here" 
extends layout 
// ... 

Dei pensieri su come posso fare questo sarebbe un grande aiuto.

Grazie!

risposta

16

Da https://github.com/visionmedia/jade/issues/654#issuecomment-5859502

layout.jade

block variables 
!!! 5 
head 
- var title = title || "Default Title Here" 
title #{title} 

child.jade:

block variables 
    title = "ST" 
extends layout 
+2

Manca" - "davanti di title = "ST su child.jade? – Meeker

+0

Solo attenzione con indentazione e assicurati di chiamare la variabile nel modo giusto: https://pugjs.org/language/attributes.html – Oriol

5

ho finito con una logica molto semplice dal momento che la risposta di cui sopra non ha funzionato per me:

in layout.jade

block head 
    - var theTitle = titleVar ? titleVar : "This title was set from The Layout!" 
title #{theTitle} 

in child.jade:

extends layout 
block head 
    - var titleVar = "This title was set from the child!" 

In questa soluzione, il layout controllerà l'esistenza di una variabile denominata titleVar: Se esiste (e non è uguale a zero) quindi il layout usa il valore di titleVar per impostare come titolo, altrimenti, il titolo predefinito (nel nostro caso: "Questo titolo è stato impostato dal layout! ") dal file di layout avrà luogo Provalo e commenta // la definizione di titleVar dal modello figlio e vedi i risultati
Spero che questa soluzione possa aiutare gli altri :)

Problemi correlati