【问题标题】:Converting string to html将字符串转换为 html
【发布时间】:2014-08-29 19:22:33
【问题描述】:

目前我有一个系统,我的用户用降价文本填写文本区域并将其存储在服务器中。比当客户端加载页面时,我希望将降价文本转换为可读的 HTML。就目前而言,我将降价转换为长 HTML 字符串,但无法将 html 注入我的页面,因为它现在只是一个字符串。

这是我迄今为止尝试过的......

咖啡脚本文件

Template.messages.convertMsg = (message) ->
    doc = document.createElement('div')
    doc.innerHTML = marked(message)
    doc.getElementsByTagName( 'a' )

HTML 文件

<div class="chat-message-contents">{{convertMsg message}}</div>

一个示例 html 字符串可能是...

'&lt;li&gt;&lt;a href="#adding-two"&gt;Adding Two&lt;/a&gt;'

【问题讨论】:

  • 你看过showdown package吗?
  • 如果标记向下已转换为 html/string 是否可以将其传递给车把,即。 template = Handlebars.compile(convertedMarkDown) 现在您可以将其放置在页面上。我的第一个想法是 jQuery $("#target-element").html(this.tempalte());不知道 coffescript 的语法是什么
  • @Quince:当标准方法足够时,不要在 Meteor 中使用 jQuery。
  • 好吧,没用过 Meteor,我只是提供了一个示例,说明我在日常使用主干时如何添加车把模板,当然要使用最有意义的。

标签: html coffeescript meteor handlebars.js


【解决方案1】:

也许我遗漏了一些东西,但你不能把 html 字符串放在三方括号中吗?

<div class="chat-message-contents">{{{convertMsg message}}}</div>

这将确保 html 不会被转义,即被渲染。

【讨论】:

  • 我只是不知道这一点。对这一切来说还是相当新的。谢谢
【解决方案2】:

最简单的方法是添加一个标准的showdown 包:

mrt add showdown

然后简单地写:

<template name="...">
  {{#markdown}}{{message}}{{/markdown}}
</template>

请注意,空格在降价中很重要,所以如果你这样做了

{{#markdown}}
  {{message}}
{{/markdown}}

消息的第一行会缩进,这会导致格式错误。


或者,如果您确信自己更喜欢自己的 Markdown 解析器,请使用三括号或 Handlebars.SafeString。另外一个好主意是在全局范围内创建您的帮助程序,以便其他模板也可以显示降价。

UI.registerHelper('convertMsg', function(options) {
  var html = marked(options.fn(this));
  return new Handlebars.SafeString(html);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 2011-03-09
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多