2016-07-04 72 views
0

在自定义元素模板中,假定存储为this.foo的字符串,例如hello\world聚合物1.x nl2br或要求验证模板中的html

如何将\n替换为<br />

在SE发现提多汁的几个职位(https://github.com/Juicy/juicy-html) 其他使用自定义元素的包装(见Bind text with line breaks

但是是不是有一个更简单的方法,那做这样的事情:

<template is="dom-repeat" items="{{bubbles}}"> 
    <li><span class="content">{{getContent(item)}}</span></li> 
</template> 

而且

getContent: function(item) { 
    return item.content.replace(/\\n/g, "<br />") 
} 

问题是<br />不evalua ted作为一个HTML元素

所以没有一个适当的方法来验证字符串对某些允许的标签(在这种情况下为br),还是我必须真的去多汁的方式?

您认为如何? ;)

+0

如果你使用'innerHTML'属性参见[这](它被计算为'HTML' http://stackoverflow.com /问题/ 21060890 /如何对分配-HTML实体 - 在 - 聚合物 - 元素定义)。我知道你是从函数调用它,但看看你是否可以使用它。 – a1626

+0

嗯,是的,这相当于在内容周围使用虚拟包装元素。这是一种可能性,但..感觉就像使用火箭筒拍摄一只苍蝇:/ 我想知道是否有一种方法来验证HTML并注入它,就像许多fw在将HTML注入模板时一样。 – rud

回答

-1

好吧,现在看来最好的(也是唯一的)方法是将HTML字符串作为参数传递给我的自定义元素,而不是使用innerHTML在所述自定义元素中注入HTML ...

这正是Juicy(https://github.com/Juicy/juicy-html)所做的。

结论,要么使用innerHTML自己在你的自定义元素,或使用多汁;)