2012-11-21 61 views
3

我收到了一些標記格式的文本,我想將它返回給我的模板,以便它可以顯示爲html。爲此,我已經定義了一個把手幫手:預格式化HTML並在模板中顯示

Handlebars.registerHelper('markdown_highlight', function (options) { 
    var converter = new Showdown.converter(); 
    var res = ''; 
    var html =converter.makeHtml(options.fn(this)); 
    var high = hljs.highlightAuto(html).value; 
    res += high; 
    return res; 
}); 

結果出來的格式,但它是直接顯示爲HTML:

pre><code> class Foo(object): def __init__(self, i, j): self.i, self.j = i, j def __str__(self): return 「(%d, %d)」 % (self.i, self.j) def __setitem__(self, idx, v): if idx == 0: self.i = v elif idx == 1: self.j = v else: raise RuntimeError(「Index out of bounds [0,1]」) </code></pre> <p>Make a subclass of Foo, named Bar, that implements the special methods <strong>eq</strong> and <strong>repr</strong>, such that the following code works: </p> <pre><code>&amp;gt;&amp;gt;&amp;gt; f = Bar(1,2)age 3 &amp;gt;&amp;gt;&amp;gt; g = Bar(2,2) &amp;gt;&amp;gt;&amp;gt; f == g False &amp;gt;&amp;gt;&amp;gt; g == eval(repr(g)) True &amp;gt;&amp;gt;&amp;gt; g[0] = 1 &amp;gt;&amp;gt;&amp;gt; f == g True </code></pre> 

發生了什麼事在輔助功能不是那麼重要,但有人可能能夠幫助解釋我如何確保返回的html顯示爲html。

回答

1

而不是

return res; 

嘗試:

return new Handlebars.SafeString(res); 
1
Template['timeline-item'].rendered = -> 
d = @find 'code' 
if d 
    hljs.highlightBlock d 

我使用這些代碼,這可以使hljs工作。

並在您的模板中,在{{{content}}}中翹曲您的模板上下文。