13

ジェイドを介してレイアウトの子テンプレートにページ タイトルを設定したいと考えています。サーバーの再起動が必要になるため、ルートにそれらを設定したくありません。これが私が達成したいと思っていることです:

レイアウト.ジェイド:

!!! 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から

レイアウト.ジェイド

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 と呼ばれる変数の存在をチェックします: 存在する場合 (そしてゼロに等しくない場合)、レイアウトは titleVar の値を使用してタイトルとして設定します。それ以外の場合は、定義済みのタイトル (この場合: 「このタイトルはレイアウトから設定されました!」) はレイアウト ファイルから行われます。自分で試して//、子テンプレートの titleVar の定義にコメントを付けて、結果を確認してください。
このソリューションが他の人に役立つことを願っています:)

于 2014-11-13T13:45:24.430 に答える