【问题标题】:HTML is shown as plain text in dojo widgetHTML 在 dojo 小部件中显示为纯文本
【发布时间】: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/tLqWd
  • parser.parse() 是做什么的?
  • 它将带有data-dojo-type 的HTML 代码转换为小部件。类似于配置选项:parseOnLoad: true.

标签: html dojo widget plaintext


【解决方案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(/&amp;lt;/g, "&lt;").replace(/&amp;gt;/g, "&gt;") 添加到 messageText 并开始正常工作。

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

【讨论】:

    猜你喜欢
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    相关资源
    最近更新 更多