我有一个层次结构,用几个下拉列表表示。
当选择一个项目时,父级下拉选择驱动子级下拉列表的选项。
当父元素被选中时,我正在填充子元素下拉列表,将第一个元素添加为空(""),并将文本显示为"--select--“。
每当父项发生变化时,我希望在子项的下拉列表中默认选中此项。
问题是,"selected“属性似乎没有完成它的工作。
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 ]你可以在这里看到行为:
选择父项“条目1”,然后选择子项"1.2“。
现在选择父条目"entry 2“,注意它忽略了"selected”属性,只有当子条目为空("")时才是真的。现在默认选择的条目是"2.2“,对我来说,这表示它保持了先前选择的元素"1.2”的位置。
关于谁可以解决这个问题,有什么想法吗?
发布于 2017-10-09 20:46:22
问题似乎出在getOptions函数中;因为它的参数没有改变,所以它的输出(每个<option>元素)也不会改变。由于输出不会更改,因此Elm不会修改<option>元素的selected属性。
(由于该<select>没有Msg事件,因此Elm看不到更改事件和新值。)
getOptions : String -> Html msg
getOptions val =
Html.option
[ Html.Attributes.selected (val == "")
, Html.Attributes.value val
]
[ Html.text val ]每个Hierarchy项都应该跟踪它的selected值,并将其传递给getOptions。如下所示:
getOptions : String -> String -> Html msg
getOptions selectedValue val =
Html.option
[ Html.Attributes.selected (val == selectedValue)
, Html.Attributes.value val
]
[ Html.text val ]https://stackoverflow.com/questions/46636374
复制相似问题