Jade mixin属性未应用

时间:2014-12-16 17:55:50

标签: javascript pug

我使用jade来模拟报告表,如下所示:

mixin report_row(row)
  tr(data-id=row.c[keyIndex].v)
    each cell, i in row.c
      +cell_decorator(data.cols[i], cell)(data-foo="bar")

它是由装饰的报告单元组成的报告行的嵌套mixin结构。

问题是没有应用data-foo属性。

我在SO上看到了关于mixin属性的其他问题,但我找不到模板的任何语法问题,它只是在忽略属性的情况下呈现。

1 个答案:

答案 0 :(得分:1)

documentation显示了将属性传递给mixins的示例:

mixin link(href, name)
  //- attributes == {class: "btn"}
  a(class!=attributes.class, href=href)= name

+link('/foo', 'foo')(class="btn")

请注意,mixin本身使用隐式attributes名称来引用传递的属性 - 换句话说,属性不会自动应用,它们只是作为参数发送到mixin中。您必须更改cell_decorator mixin的定义才能考虑属性。

如果您只想在mixin上应用属性,可以使用&attributes语法:

mixin cell_decorator(colname, data)
    //- the `attributes` get applied to the td
    td(...)&attributes(attributes)

+cell_decorator(data.cols[i], cell)(data-foo="bar")

请注意,使用此类&attributes(使用mixin调用)是安全的,因为值会在调用期间进行转义。