我想通过jade在布局的子模板中设置我的页面标题。我不想在路由中设置它们,因为这需要重新启动服务器。这是我希望实现的目标:
layout.jade:
!!! 5
head
- var title = title || "Default Title Here"
title #{title}
// ...
child.jade:
- var title = "Child Title Here"
extends layout
// ...
关于如何实现这一目标的任何想法都会有很大的帮助。
谢谢!
答案 0 :(得分:16)
来自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
答案 1 :(得分:6)
我最终得到了一个非常简单的逻辑,因为上面的答案对我不起作用:
layout.jade 中的
block head
- var theTitle = titleVar ? titleVar : "This title was set from The Layout!"
title #{theTitle}
child.jade: 中的
extends layout
block head
- var titleVar = "This title was set from the child!"
在此解决方案中,布局将检查是否存在名为titleVar的变量:如果它确实存在(并且它不等于零),则布局使用titleVar的值来设置为标题否则,将从布局文件中发生预定义的标题(在我们的例子中:" 此标题是从布局设置的!")。亲自尝试并从子模板中评论//
titleVar的定义并查看结果。我希望这个解决方案可以帮助别人:)