【问题标题】:Jade Templates - Dynamically Calling a MixinJade 模板 - 动态调用 Mixin
【发布时间】:2014-06-24 16:43:45
【问题描述】:

如何使用输入到 Jade 模板的 json 字符串来动态加载 mixin?下面,目标是让twoColumn.jade 加载foobar 混合。

twoColumn.jade

mixin twoColumns(obj)
    .container-fluid
        .row(class=obj.class)
            for item in obj.items
                .col-xs-12.col-sm-3
                    //- Syntax for dynamically calling a mixin?
                    +item.template(item)

content.json

{
    "twoColumns": {
        "class": "foobar",
        "items": [
            {
                "template": "foo",
                "title": "Hello"     
            },
            {
                "template": "bar",
                "title": "World"     
            }
        ]            
    }
}

【问题讨论】:

    标签: javascript node.js templates pug


    【解决方案1】:

    这是一个在 Jade 中不是很明显的功能,因为它没有在文档中明确提及。您实际上可以使用插值语法 (#{...}) 来动态选择 mixin 名称。

    来自Jade language guide

    插值?对!这两种类型的文本都可以使用插值,如果我们将{ name: 'tj', email: 'tj@vision-media.ca' } 传递给编译函数,我们可以执行以下操作:

    #user #{name} <#{email}>
    

    输出<div id="user">tj <tj@vision-media.ca></div>

    示例用法:

    mixin foo(item)
      p Foo called
    
    mixin bar(item)
      p Bar called
    
    mixin twoColumns(obj)
      .container-fluid
        .row(class=obj.class)
          for item in obj.items
            .col-xs-12.col-sm-3
              +#{item.template}(item)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      • 2014-03-14
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多