HTML 在 dojo 小部件中显示为纯文本
Posted
技术标签:
【中文标题】HTML 在 dojo 小部件中显示为纯文本【英文标题】:HTML is shown as plain text in dojo widget 【发布时间】:2013-06-05 12:19:13 【问题描述】:我有一个带有生成内容的 dojo 小部件,在我的例子中是文本消息。
消息文本是带有<b>, <i>
等标签的格式化文本。当我通过$messageText
将它放入我的小部件时,它显示为纯文本。
如何让我的小部件将所有这些标签解析为 DOM 节点?
更新 .jsp 片段:
<script>
(new MyWidget(
text: "<b>message</b>"
).placeAt(dojo.byId("placeWidgetHere");
</script>
<div id="placeWidgetHere"></div>
小部件 .html 模板:
<div>$text</div>
【问题讨论】:
我认为您的问题出在其他地方。我刚刚通过创建一个 HTML 小部件对其进行了测试(Dojo 1.9),我可以使用 HTML 标记。示例:jsfiddle.net/tLqWdparser.parse()
是做什么的?
它将带有data-dojo-type
的HTML 代码转换为小部件。类似于配置选项:parseOnLoad: true
.
【参考方案1】:
您可以在自定义小部件上使用attribute map,而不是使用substitution variables(不推荐)。
<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");
【讨论】:
什么是_setMessageTextAttr
?
_setXXXAttr
是小部件的命名约定,当一个小部件使用名为 XXX 的属性实例化时,如果小部件上存在名为 _setXXXAttr
的方法,则会调用该方法。否则 XXX 值将直接设置到小部件上。 dojotoolkit.org/reference-guide/1.8/quickstart/…【参考方案2】:
问题在于messageText
将“”符号分别转换为“”。
我将 .replace(/&lt;/g, "<").replace(/&gt;/g, ">")
添加到 messageText 并开始正常工作。
感谢所有试图帮助我的人。
【讨论】:
以上是关于HTML 在 dojo 小部件中显示为纯文本的主要内容,如果未能解决你的问题,请参考以下文章