将字符串转换为html

时间:2014-07-08 22:08:43

标签: html coffeescript meteor handlebars.js

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

这是我到目前为止所尝试的......

Coffeescript档案

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字符串可能是......

'<li><a href="#adding-two">Adding Two</a>'

2 个答案:

答案 0 :(得分:1)

也许我错过了一些东西,但是你不能把html字符串放在三个括号中吗?

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

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

答案 1 :(得分:1)

最简单的方法是添加标准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);
});