在选择元素中,如何从Elm中的模型中指定最初选择的选项?

在选择元素中,如何从Elm中的模型中指定最初选择的选项?,elm,Elm,让我们假设我有一个select元素来选择一个人,我想有一个特定的人,比如id=3,被最初选中。如何将此id向下传递到选项中,然后在该选项中将选定属性设置为True 一些示例代码: personSelect : List Person -> String -> Html Msg personSelect : personList selectedId = div [] [ select [] (List.map personOption personList)

让我们假设我有一个select元素来选择一个人,我想有一个特定的人,比如id=3,被最初选中。如何将此id向下传递到选项中,然后在该选项中将选定属性设置为True

一些示例代码:

personSelect : List Person -> String -> Html Msg
personSelect : personList selectedId =
    div []
        [ select [] (List.map personOption personList) ]


personOption : Person -> Html Msg
personOption : person = 
    option [ value (toString person.id) ] [ text person.name ]
具体来说,如何将selectedId传递给personOption?我甚至可以用List.map来做这个吗

非常感谢

提供selectedId作为personOption的参数,并利用它在Elm中部分应用函数。也就是说,当你给一个函数一些但不是它所需要的全部参数时,你会得到一个等待剩余参数的函数

首先,将selectedId添加到personOptions中,如果选项匹配,则将其呈现为selected

personOption : String -> Person -> Html Msg
personOption selectedId person = 
  option 
    [ selected (selectedId == person.id)
    , value (toString person.id)
    ]
    [ text person.name ]
然后在将personOption传递给map之前,通过为其提供第一个参数来部分应用personOption:

提供selectedId作为personOption的参数,并利用它在Elm中部分应用函数。也就是说,当你给一个函数一些但不是它所需要的全部参数时,你会得到一个等待剩余参数的函数

首先,将selectedId添加到personOptions中,如果选项匹配,则将其呈现为selected

personOption : String -> Person -> Html Msg
personOption selectedId person = 
  option 
    [ selected (selectedId == person.id)
    , value (toString person.id)
    ]
    [ text person.name ]
然后在将personOption传递给map之前,通过为其提供第一个参数来部分应用personOption: