2016-04-02 57 views
1

有没有办法让胡须展开变量内的标签?在变量内展开标签

我知道这是偏分的目的。但是,正如您在下面的示例中看到的那样,由于视图的结构,使用偏分组有时不切实际。

如果不是,我应该如何更改下面的视图结构?目前,我预先提供了每个条目的html属性。这看起来并不理想(并且打破了改变胡须的分隔符等功能)。

一个博客的主页视图:

var view = { 
    title: 'Example blog', 
    entries: [ 
    {url: '/a', html: '<p>The first entry on {{title}}</p>'},   
    {url: '/b', html: '<p>The second entry on {{title}}</p>'},  
    {url: '/c', html: '<p>The third entry on {{title}}</p>'} 
    ] 
}; 

相应的模板:

{{#entries}} 
    {{{html}}} 
{{/entries}} 

调用Mustache.render后,我收到此。

<p>The first entry on {{title}}</p>   
<p>The second entry on {{title}}</p> 
<p>The third entry on {{title}}</p> 

而且我希望收到此:

<p>The first entry on Example blog</p>   
<p>The second entry on Example blog</p> 
<p>The third entry on Example blog</p> 

回答

3

胡子不这样做,,你不希望它。它被称为“胡须注入”,它相当于SQL注入。

当Twitter第一次开始使用Mustache客户端时,发生了一个攻击,其中发送带有Mustache标签的URL会导致任何人查看推文转发它。修复是为了防止Moustache扩展标签。

1

试试这个:

var view = { 
    title: 'Example blog', 
    entries: [ 
    {url: '/a', position: 'first'},   
    {url: '/b', position: 'second'},  
    {url: '/c', position: 'third'} 
    ] 
}; 

{{#entries}} 
    <p>The {{position}} entry on {{title}} blog</p> 
{{/entries}} 
+0

对不起,我应该更清楚。我们不能假定每个条目的HTML都是如此重复 - 它们是博客帖子,其中一些包含胡须标签​​。 – davidmerfield