Polymer 1.x nl2br,或在模板中验证 html
Polymer 1.x nl2br, or the quest to validating html in templates
在自定义元素模板中,假定 hello\world
等字符串存储为 this.foo
。
如何将 \n
替换为 <br />
?
在 SE 上找到的几个帖子提到了 Juicy (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 />
没有被评估为 HTML 元素
所以没有正确的方法来根据某些允许的标签(br
在这种情况下)验证字符串,或者我真的必须采用 Juicy 方式吗?
你怎么看? ;)
好吧,现在实现此目标的最佳(也是唯一?)方法似乎是将 HTML 字符串作为参数传递给我的自定义元素,而不是使用 innerHTML
注入所述自定义元素中的 HTML...
这正是 Juicy (https://github.com/Juicy/juicy-html) 所做的。
结论,要么在自定义元素中使用 innerHTML
你自己,要么使用 Juicy ;)
在自定义元素模板中,假定 hello\world
等字符串存储为 this.foo
。
如何将 \n
替换为 <br />
?
在 SE 上找到的几个帖子提到了 Juicy (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 />
没有被评估为 HTML 元素
所以没有正确的方法来根据某些允许的标签(br
在这种情况下)验证字符串,或者我真的必须采用 Juicy 方式吗?
你怎么看? ;)
好吧,现在实现此目标的最佳(也是唯一?)方法似乎是将 HTML 字符串作为参数传递给我的自定义元素,而不是使用 innerHTML
注入所述自定义元素中的 HTML...
这正是 Juicy (https://github.com/Juicy/juicy-html) 所做的。
结论,要么在自定义元素中使用 innerHTML
你自己,要么使用 Juicy ;)