2016-07-04 50 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自己在你的自定義元素,或使用多汁;)