2013-03-29 9 views
13

Tôi muốn đặt tiêu đề trang của mình trong các mẫu con của bố cục qua ngọc bích. Tôi không muốn đặt chúng trong các tuyến đường vì yêu cầu khởi động lại máy chủ. Dưới đây là những gì tôi đang hy vọng sẽ đạt được:Đặt tiêu đề trang từ mẫu con trong Jade

layout.jade:

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

child.jade:

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

Bất kỳ suy nghĩ về làm thế nào tôi có thể thực hiện điều này sẽ là một giúp đỡ nhiều.

Cảm ơn!

Trả lời

16

Từ 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

Thiếu" - "ở phía trước of title = "ST trên child.jade? – Meeker

+0

Chỉ cần cẩn thận với thụt đầu dòng và đảm bảo gọi biến theo đúng cách: https://pugjs.org/language/attributes.html – Oriol

5

tôi đã kết thúc với một logic rất đơn giản vì những câu trả lời ở trên không làm việc cho tôi:

trong layout.jade

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

trong child.jade:

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

Trong giải pháp này, cách bố trí sẽ kiểm tra sự tồn tại của một biến gọi là titleVar: Nếu nó không tồn tại (và nó không phải bằng số không) sau đó bố cục sử dụng giá trị titleVar để đặt làm tiêu đề, nếu không, tiêu đề được xác định trước (trong trường hợp của chúng tôi: "Tiêu đề này được đặt từ Bố cục! ") từ tệp bố cục sẽ diễn ra. Hãy thử nó cho chính mình và nhận xét // định nghĩa titleVar từ mẫu con và xem kết quả.
Tôi hy vọng giải pháp này có thể giúp người khác :)