我使用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属性的其他问题,但我找不到模板的任何语法问题,它只是在忽略属性的情况下呈现。
答案 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调用)是安全的,因为值会在调用期间进行转义。