Soru yeşim şablonları arasındaki değişkenleri nasıl geçilir


Bir temeli bir şablon olarak kullanıyorum ve onu kullanan sayfadaki bazı değişkenlerin farkında olmasını istiyorum ...

Dosya: template.jade

vars = vars || {some:"variables"}
!!! 5
head
    title vars.some

Dosya: page.jade

vars = {some:"things"} //- this does not get used from within template.jade
extends template

Derlenmiş page.jade başlıklarının "şeyler" olmasını istiyorum


52
2017-09-28 19:49


Menşei


Bu sınırlama gerçekten berbat. Bu değişkenlerin genişletilmiş şablona gitmesi gerekiyor. - cc young


Cevaplar:


Çözüm buluyorum İşte

değişkenlerle blok geçir

template.jade:

!!!
html
  block vars
  head
      title #{pageTitle} - default www title
  body

page.jade

extends template
block vars
  - var pageTitle = 'Home'

115
2018-06-14 08:11



Basit ve verimli bir çözüm, teşekkürler! - gustavohenke
Evet iyi çalıştı - Gepsens
Bu kabul edilmiş bir cevap olmalı. - Travis
Bu, düzeni genişleten bir şablon eklediğinizde işe yaramaz - Ben Southall
Bunu yeni buldu. Sorunumu mükemmel bir şekilde çözüyor. Oldukça temiz bir çözüm. Teşekkürler! - Mathias


Blokları kullanabilirsiniz:

template.jade:

!!! 5
head
    block title
        title variables

page.jade:

extends template
block title
    title things

Diğer olarak senaryonuzdaki değişkenleri tanımlamanız gerekir (örneğin ifade). Bildiğim kadarıyla, değişkenler sadece içerme yoluyla geçirilebilir, ancak düzende yukarı doğru değil (sizin durumunuzda template.jade).


4
2017-12-14 11:08



Bu Jade berbat! - arkanciscan


Blokların benim için işe yaramayacağını düşündüm çünkü değişkeni birden fazla yerde kullanmam gerekiyordu.

// base.jade
pageTitleVar = "Parent's Title"
!!!
title !{pageTitleVar}
h1 !{pageTitleVar}

Ana şablonda aynı bloğu iki kez belirtebileceğiniz ve alt şablonun kendisine aktardığı her neyse çoğaltılacağınız ortaya çıkar.

// base.jade
pageTitleVar = "Parent's Title"
!!!
title
  block pageTitleBlock
    !{pageTitleVar}
h1
  block pageTitleBlock
    !{pageTitleVar}

// child.jade
extends base
pageTitleVar = "Child's Title"
block pageTitleBlock
   !{pageTitleVar}

FTW blokları


1
2018-04-18 18:32





Böyle bir başlık eklemek için harika ve yorumlanmış bir çözüm:
"Projem - Sayfa".

Ya da sadece bu:
"Projem"

şablon: template.jade

doctype 5
html(lang="en")
head
    //- setting the page title to be dynamic
    block vars
        - var defaultTitle = "My Project"
        - var pageTitle = pageTitle
    title #{defaultTitle}#{pageTitle}

bazı sayfa: page.jade

extends base
//- custom page title
block append vars
    pageTitle = " - The Page"

1
2018-01-29 16:26





Nasıl kullanılır şablon içerir?

// vars.jade
- var name = "Chris"
#{ nick = "StackOverflow"  }


// page.jade
doctype html
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
  body
    h1= title
    include vars
    p Welcome to #{title} #{name} #{nick}

1
2018-02-16 04:05