首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elm -下拉“选定”属性在elm中不起作用

Elm -下拉“选定”属性在elm中不起作用
EN

Stack Overflow用户
提问于 2017-10-09 05:44:29
回答 1查看 823关注 0票数 5

我有一个层次结构,用几个下拉列表表示。

当选择一个项目时,父级下拉选择驱动子级下拉列表的选项。

当父元素被选中时,我正在填充子元素下拉列表,将第一个元素添加为空(""),并将文本显示为"--select--“。

每当父项发生变化时,我希望在子项的下拉列表中默认选中此项。

问题是,"selected“属性似乎没有完成它的工作。

代码语言:javascript
复制
childOptions : String -> Html msg
childOptions val =
    -- This selected attribute does not seem to work
    Html.option [ (Html.Attributes.selected (val == "")), Html.Attributes.value val ] [ Html.text val ]

你可以在这里看到行为:

Ellie editor example

选择父项“条目1”,然后选择子项"1.2“。

现在选择父条目"entry 2“,注意它忽略了"selected”属性,只有当子条目为空("")时才是真的。现在默认选择的条目是"2.2“,对我来说,这表示它保持了先前选择的元素"1.2”的位置。

关于谁可以解决这个问题,有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2017-10-09 20:46:22

问题似乎出在getOptions函数中;因为它的参数没有改变,所以它的输出(每个<option>元素)也不会改变。由于输出不会更改,因此Elm不会修改<option>元素的selected属性。

(由于该<select>没有Msg事件,因此Elm看不到更改事件和新值。)

代码语言:javascript
复制
getOptions : String -> Html msg
getOptions val =
    Html.option
        [ Html.Attributes.selected (val == "")
        , Html.Attributes.value val
        ]
        [ Html.text val ]

每个Hierarchy项都应该跟踪它的selected值,并将其传递给getOptions。如下所示:

代码语言:javascript
复制
getOptions : String -> String -> Html msg
getOptions selectedValue val =
    Html.option
        [ Html.Attributes.selected (val == selectedValue)
        , Html.Attributes.value val
        ]
        [ Html.text val ]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46636374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档