123*_*3Ex 1 haskell pretty-print haskell-snap-framework
我正在使用snap框架和haskell来创建简单的Web应用程序.我想知道如何将列表呈现到网页,就像这样我有一个名字和姓氏的列表
[["firstName1","lastName1"],["firstName2","lastName2"],["firstName3","lastName3"]]
Run Code Online (Sandbox Code Playgroud)
我想在两列中显示这些信息,有什么可能的方法,我能够绑定单值信息并显示在网页上.
Don对blaze-html的建议是一种方法,但我发现当我这样做时,我更倾向于通过将视图(在本例中为HTML)嵌入到您的视图中来违反常用的MVC设计模式Haskell代码.在某些情况下,如果你只是想做一些快速和肮脏的事情,这可能是要做的事情.但是,如果您希望以一种将视图与控制器分开的方式适应更大的应用程序,并允许设计人员使用不熟悉Haskell的设计人员,那么您最好使用Heist模板系统.
我们这里有一个Heist教程.我最近还写了一系列关于这类事情的博客文章.特别是系列中的第二篇文章可能与您的问题最相关.这里有一些代码可以满足您的需求:
names :: [(Text,Text)]
names = [("Alice", "Anderson"), ("Bob", "Brown")]
nameSplice :: (Text, Text) -> Splice Application
nameSplice name =
runChildrenWithText [("firstName", fst name), ("lastName", snd name)]
namesSplice :: Splice Application
namesSplice = mapSplices nameSplice names
Run Code Online (Sandbox Code Playgroud)
在应用程序中的某个位置绑定名称拼接后,bindSplice "names" namesSplice您可以从以下模板获取此数据:
<table>
<names>
<tr><td><firstName/></td><td><lastName/></td></tr>
</names>
</table>
Run Code Online (Sandbox Code Playgroud)
关于这一点的好处是网页设计师可以完全控制名称的显示方式.如果他们需要更改显示以说出"lastname,firstname"格式的无序列表,这将非常容易在此处执行,而无需重新编译您的应用程序.
| 归档时间: |
|
| 查看次数: |
616 次 |
| 最近记录: |