榆树:如何在HTML列表中显示字符串列表?

gat*_*ado 20 elm

我正在编写一个elm程序,它应该在HTML列表中格式化其输出.我想要的功能,

inputs = ["first", "second", "third"]
Run Code Online (Sandbox Code Playgroud)

并输出某种Element基本上是榆树的,

<ul>
    <li>first</li>
    <li>second</li>
    <li>third</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

可悲的是,我找不到任何内置函数来执行此操作.也许markdown语法可以扩展为采用类似Mustache的模板,

[markdown|
{{#inputs}}
* {{text}}
{{/inputs}}
]
Run Code Online (Sandbox Code Playgroud)

(抱歉,我不确定对于字符串数组而不是对象数组,正确的Mustache语法是什么.

原始的HTML元素发射也很好.提前致谢!

Sim*_*n H 30

你想在一个元素(即画布)或真正的HTML渲染.如果是后者,那么你可以使用elm/html

renderList : List String -> Html msg
renderList lst =
    ul []
        (List.map (\l -> li [] [ text l ]) lst)
Run Code Online (Sandbox Code Playgroud)

或管道风格

renderList : List String -> Html msg
renderList lst =
    lst
       |> List.map (\l -> li [] [ text l ])
       |> ul []
Run Code Online (Sandbox Code Playgroud)

  • 我很确定这是OP真正想要的,因为他的评论是"有浏览器(+ css)格式".问题是,他要求帮助将其格式化为Elm`Element`,这不是他真正想要的(纯HTML元素).因此,你的第一个答案是解决他真正想要*的问题,而不是他要求的*. (2认同)
  • `List.map`,对于像我这样的未来的新手来说,只是迂腐/乐于助人 (2认同)

Eri*_*ric 6

当您开始编写函数时,定义函数的签名很有帮助.签名写在函数定义之前的行上.你想要的签名是:

toHtmlList : List String -> Html msg -- here's the signature
toHtmlList strings =                 -- here's the start of the function body
  ???
Run Code Online (Sandbox Code Playgroud)

此函数的输出具有类型Html msg,由elm-html包提供.您可以通过$ elm-package install elm-lang/html从项目根目录运行命令将其添加到项目中.

安装完成后,添加一个语句以导入Html到elm文件中,并实现该功能.这是一个有效的实现:

StringList.elm

import Html exposing (..)

inputs = ["first", "second", "third"]

toHtmlList : List String -> Html msg
toHtmlList strings =
  ul [] (List.map toLi strings)

toLi : String -> Html msg
toLi s = 
  li [] [ text s ]
Run Code Online (Sandbox Code Playgroud)


Dan*_*res 0

您可以使用拼贴在 Elm 中编写项目符号列表:

bullet : Element
bullet = collage 12 20 [circle 3 |> filled black]

render : [String] -> Element
render = flow down . map (beside bullet . plainText)

main : Element
main = render ["first", "second", "third"]
Run Code Online (Sandbox Code Playgroud)

实例:http ://share-elm.com/sprout/538e460fe4b07afa6f981ab6

  • 问题是,在 Elm 中,您可以将这些全部抽象出来,也可以完全控制视觉外观。例如,您可以根据纯文本的大小更改“12”、“20”和“3”。您无法在 HTML / CSS 中执行此操作,因为没有函数(除非您使用预处理器或使用 JavaScript)。 (2认同)