13

我想通过jade在布局的子模板中设置我的页面标题。我不想在路由中设置它们,因为这需要重新启动服务器。这是我希望完成的事情:

布局.jade:

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

child.jade:

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

关于如何实现这一点的任何想法都会有很大帮助。

谢谢!

4

2 回答 2

16

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

布局.jade

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

child.jade:

block variables
  title = "ST"
extends layout
于 2013-03-29T19:38:17.140 回答
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 的变量:如果确实存在(并且不等于 0),则布局使用 titleVar 的值设置为标题,否则使用预定义的标题(在我们的例子中: " This title was set from the Layout! ") 来自布局文件。自己尝试一下,并//从子模板中注释 titleVar 的定义并查看结果。
我希望这个解决方案可以帮助其他人:)

于 2014-11-13T13:45:24.430 回答