目前我有一个系统,我有用户填写带有降价文本的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>'
答案 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);
});