在 select 元素中,如何从我的 Elm 模型中指定最初的 selected 选项?
In a select element, how do I designate the initially selected option from my model in Elm?
假设我有一个 select 元素来选择一个人,我想要某个人,比如 id = 3,最初被 selected。如何将此 ID 传递到我的选项中,然后在该选项中将 selected 属性设置为 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
并在匹配时将选项渲染为选中状态。
personOption : String -> Person -> Html Msg
personOption selectedId person =
option
[ selected (selectedId == person.id)
, value (toString person.id)
]
[ text person.name ]
然后通过给它第一个参数 部分应用 personOption
,然后 将它传递给 map
:
personSelect : List Person -> String -> Html Msg
personSelect personList selectedId =
div []
[ select []
(List.map (personOption selectedId) personList)
-- personOption selectedId : String -> Html Msg
]
假设我有一个 select 元素来选择一个人,我想要某个人,比如 id = 3,最初被 selected。如何将此 ID 传递到我的选项中,然后在该选项中将 selected 属性设置为 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
并在匹配时将选项渲染为选中状态。
personOption : String -> Person -> Html Msg
personOption selectedId person =
option
[ selected (selectedId == person.id)
, value (toString person.id)
]
[ text person.name ]
然后通过给它第一个参数 部分应用 personOption
,然后 将它传递给 map
:
personSelect : List Person -> String -> Html Msg
personSelect personList selectedId =
div []
[ select []
(List.map (personOption selectedId) personList)
-- personOption selectedId : String -> Html Msg
]