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 ;)