2017-09-12 28 views
1

在Grails的标签库,我使用的标记生成器创建的标记,看起来像这样展开对象属性为标记属性

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

在这种情况下性能是格式化组对象的属性:{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标签库样本:

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

您可以更改您的示例,以便它可以运行并显示您说y的输出你会得到吗? –

+0

谢谢@tim_yates。我刚刚添加了一个样本 – user615274

+1

不是在计算机上,而是尝试了扩散映射运算符:'markupBuilder.a(h​​ref:'',*:properties)' –

回答

2

您可以使用传播地图运营商解开地图,并通过每个条目就好像它是一个参数:

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