将对象属性展开为标记属性

时间:2017-09-12 21:17:48

标签: html5 grails

在grails taglib中,我使用标记构建器来创建看起来像这样的标记

a(href: '#', class: 'show-modal', properties) {
    mkp.yield '+'
}

在这种情况下, properties 是一组格式化的对象属性:{data-internet=true, data-desc=Lorem ipsum}

我需要将属性扩展为html5数据属性。得到这样的东西。

<a href="#" class="show-modal" data-internet=true, data-desc=Lorem ipsum>

现在而不是这个我得到了这个结果

<a href="#" class="show-modal">{data-internet=true, data-desc=Lorem ipsum}+</a>

这是一个grails taglib示例:

def test = { attrs ->
    MarkupBuilder markupBuilder = new MarkupBuilder(out)

    Map properties = ['data-internet': true, 'data-desc': 'Lorem ipsum...']

    markupBuilder.a(href: '', properties) {
        mkp.yield 'More info'
    }
}

当我从视图中渲染<g:test/>时,我得到了这个:

<a href="">{data-internet=true, data-desc=Lorem ipsum...}More info</a>

我期待着这一点:

<a href="" data-internet='true', data-desc='Lorem ipsum...'>More info</a>

感谢您的时间和想法

1 个答案:

答案 0 :(得分:2)

您可以使用spread-map运算符来展开地图并将每个条目作为参数传递:

markupBuilder.a(href: '', *:properties) {
    mkp.yield '+'
}