HTML在dojo小部件中显示为纯文本

时间:2013-06-05 12:19:13

标签: html dojo widget plaintext

我有一个带有生成内容的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>

2 个答案:

答案 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(/&lt;/g, "<").replace(/&gt;/g, ">")添加到messageText,然后开始正常工作。

感谢所有试图帮助我的人。