通过Jade模板传递变量

Joh*_*ler 23 pug

在Jade中,可以将变量从一个模板传递到另一个模板吗?我想做这样的事情:

tmp1.jade

div.anyClass
  include components/checkbox('someLabel')
Run Code Online (Sandbox Code Playgroud)

tmp2.jade

div.otherClass
  div.label
    {someLabel}
Run Code Online (Sandbox Code Playgroud)

谢谢!

Jed*_*son 55

包含的模板继承包含它们的模板的变量范围,因此您将自动为您执行的操作.

所以以下内容将起作用:

tmp1.jade

- var label = 'value'
div.anyClass
    include tmp2
Run Code Online (Sandbox Code Playgroud)

tmp2.jade

div.otherClass
    div.label
        #{label}
Run Code Online (Sandbox Code Playgroud)

你也可以使用mixins来传递变量,它们就像是函数(你首先定义它们,然后调用它们)

所以你可以做到以下几点:

tmp1.jade

mixin labeldiv(myLabel)
    div.otherClass
        div.label
            #{myLabel}

div.anyClass
    +labelDiv("the label")
Run Code Online (Sandbox Code Playgroud)

值得一提的是,如果你希望它们在多个模板中是通用的,你也可以将mixins放入包含内.你可以这样做:

myMixins.jade

mixin labeldiv(myLabel)
    div.otherClass
        div.label
            #{myLabel}
Run Code Online (Sandbox Code Playgroud)

tmp1.jade

include myMixins
div.anyClass
    +labelDiv("the label")
Run Code Online (Sandbox Code Playgroud)

玉语法文件有它是如何工作的一些伟大的(活)的例子.