Elm 在列表上循环以创建元素
这个设置似乎是正确的,但显然不是,我看不出哪里出了问题。我试图循环一个“对象列表”,为列表中的每个项目创建一个Elm 在列表上循环以创建元素,elm,Elm,这个设置似乎是正确的,但显然不是,我看不出哪里出了问题。我试图循环一个“对象列表”,为列表中的每个项目创建一个ul,其中包含lis,并将它们放在div中。忽略所有涉及ID的内容。我感觉我不完全确定List.map如何返回 type alias Product = { a : String , b : String , c : Int , d : String , e : String } type alias Model = { id : String , pr
ul
,其中包含li
s,并将它们放在div
中。忽略所有涉及ID的内容。我感觉我不完全确定List.map
如何返回
type alias Product =
{ a : String
, b : String
, c : Int
, d : String
, e : String
}
type alias Model =
{ id : String
, products : List Product}
view : Model -> Html Msg
view model =
div []
[ input [ type' "text", onInput UpdateText ] []
, button [ type' "button", onClick GetProduct ] [ text "Search" ]
, br [] []
, code [] [ text (toString model.products) ]
, div [] [ renderProducts model.products ]
]
renderProduct product =
let
children =
[ li [] [ text product.a ]
, li [] [ text product.b ]
, li [] [ text (toString product.c) ]
, li [] [ text product.d ]
, li [] [ text product.e ] ]
in
ul [] children
renderProducts products =
List.map renderProduct products
错误如下:
The 2nd argument to function `div` is causing a mismatch.
78| div [] [ renderProducts model.products ]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Function `div` is expecting the 2nd argument to be:
List (VirtualDom.Node a)
But it is:
List (List (Html a))
renderProducts
返回元素列表。div
的第二个参数获取元素列表。通过将第二个参数括在括号中,可以创建一个包含单个元素列表的列表。这就是为什么错误消息说
您应该这样做:
div[](renderProducts model.products)
renderProducts
返回元素列表。div
的第二个参数获取元素列表。通过将第二个参数括在括号中,可以创建一个包含单个元素列表的列表。这就是为什么错误消息说
您应该这样做:
div[](renderProducts model.products)
谢谢。我知道这一定是某种疏忽。谢谢。我知道这一定是某种疏忽。
But it is:
List (List (Html a))