我想通过构建一些HTML并将其绑定到标签以便在Heist模板中使用来集成Snap的模板和Blaze HTML构建器。这是我尝试过的。
numbers :: Int -> Splice AppHandler
numbers n = return $ [TextNode $ T.concat.toChunks.renderHtml $ do
p "A list of natural numbers"
ul $ forM_ [1 .. n] (li .toHtml)]
这不能按预期工作,因为snap会将HTML字符串直接呈现给生成的页面。如何捕捉渲染火焰生成的HTML?
答案 0 :(得分:3)
如果你想坚持使用Heist拼接,那么 xmlhtml 包中的renderHtmlNodes
模块中的函数Text.Blaze.Renderer.XmlHtml
在这种情况下应该会有很多帮助。
我不完全理解你的例子,但这是我如何修改它以结合我的建议:
numbers :: Int -> Splice AppHandler
numbers n = return $ renderHtmlNodes $ do
p "A list of natural numbers"
ul $ forM_ [1 .. n] (li .toHtml)