1

我有一个带有生成内容的 dojo 小部件,在我的情况下是文本消息。
消息文本是带有<b>, <i>etc. 标签的格式化文本。当我通过它把它放到我的小部件上${messageText}时,它显示为纯文本。

如何让我的小部件将所有这些标签解析为 DOM 节点?

更新 .jsp 片段:

<script>
(new MyWidget({
    text: "<b>message</b>"
}).placeAt(dojo.byId("placeWidgetHere");
</script>

<div id="placeWidgetHere"></div>

小部件 .html 模板:

<div>${text}</div>
4

2 回答 2

1

您可以在自定义小部件上使用属性映射,而不是使用替换变量(不推荐) 。

<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");
于 2013-06-05T12:50:28.367 回答
0

问题是messageText“<”和“>”符号分别转换为“<”和“>”。我添加.replace(/&lt;/g, "<").replace(/&gt;/g, ">")到 messageText 并开始正常工作。

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

于 2013-06-07T11:55:28.160 回答