我有一个带有生成内容的dojo小部件,在我的情况下是短信
消息文本是带有<b>, <i>
等标签的带格式的文本。当我通过${messageText}
将它放到我的小部件时,它显示为纯文本。
如何让我的小部件将所有这些标签解析为DOM节点?
UPD .jsp片段:
<script>
(new MyWidget({
text: "<b>message</b>"
}).placeAt(dojo.byId("placeWidgetHere");
</script>
<div id="placeWidgetHere"></div>
widget .html模板:
<div>${text}</div>
答案 0 :(得分:1)
您可以在自定义小部件上使用substitution variables,而不是使用attribute map(不推荐使用)。
<div>
<span data-dojo-attach-point="messageTextNode"></span>
</div>
declare('MyWidget'], [TemplatedMixin], {
template: ...,
messageText: '',
_setMessageTextAttr: { node: "messageTextNode", type: "innerHTML" },
});
new MyWidget({
messageText: "<b>message</b>"
}, "placeWidgetHere");
答案 1 :(得分:0)
问题是messageText
有“&lt;”和“&gt;”符号转换为“&lt;”和“&gt;”分别。
我将.replace(/</g, "<").replace(/>/g, ">")
添加到messageText,然后开始正常工作。
感谢所有试图帮助我的人。