如何在Elm中填写JSON的几个下拉列表?
我们一直在用JSON数据填写表单,需要帮助。该组件是关于在给定城市的地区中选择病房的。 数据结构是一棵城市、地区和病房的树,其结构大致如下(所有内容都用GeoJSON包装): 在视图中,三个是用于选择城市、地区和病房的三个下拉框,因此,当用户选择城市时,将从JSON响应的如何在Elm中填写JSON的几个下拉列表?,json,elm,Json,Elm,我们一直在用JSON数据填写表单,需要帮助。该组件是关于在给定城市的地区中选择病房的。 数据结构是一棵城市、地区和病房的树,其结构大致如下(所有内容都用GeoJSON包装): 在视图中,三个是用于选择城市、地区和病房的三个下拉框,因此,当用户选择城市时,将从JSON响应的属性.districts字段填充地区下拉框。 同样适用于地区下拉列表:从属性填写病房。病房 当页面加载时,它已经具有所有可用城市(以及相应的地区)的注入JSON 您对以下策略有何建议: 1) 如何获取当前选定的城市并点击下一个行
属性.districts
字段填充地区下拉框。
同样适用于地区下拉列表:从属性填写病房。病房
当页面加载时,它已经具有所有可用城市(以及相应的地区)的注入JSON
您对以下策略有何建议:
1) 如何获取当前选定的城市并点击下一个行政区划的服务器?即,当用户选择District时,获取其slug
并查询病房服务器
2) 如何从响应或页面上注入的JSON中填充后续select?也就是说,当用户选择另一个城市时,在地区选择框中填入相应的地区?以下是我过去做过类似事情的方式(在elm v0.17.0中): 您将对地区重复相同操作以获得病房。启动 如果所选城市已知,则在启动之前,您可以将其作为标志传递给 你可以对城市列表做同样的事情 请看这个例子,它涵盖了大部分内容 如果您想在启动时发送
xhr
请求,您可以使用一个小技巧:
init : String -> (Model, Cmd Msg)
init topic =
( Model topic "waiting.gif"
, getRandomGif topic
)
其中,getRandomGif
将在启动时执行xhr
请求,假设您已通过将其作为标志传递或用户输入获得了一些数据
在每次fetchsuccess
上,您应该发送下一个xhr
,以获取下一步的数据
流动
请考虑这个流程图,说明你的多步形式的流程。虚线箭头指向步骤,如果要在某个点更改城市/地区,可以在该步骤中重新启动循环
缓存层是可选的,Elm为此提供了多种数据结构
这个问题感觉有点太宽泛了。你想达到什么目标?您想减少
xhr
请求的数量吗?我们只是想用JSON数据填充下拉框。问题是我们不知道如何从同一个请求/数据集(Cit和地区、地区和病房对)中填写家长和孩子下拉列表。
dropdown : List City -> Html Msg
dropdown cities =
div []
[ div []
[ span [] [ text "dropdown label name" ]
, selectOptions cities
]
]
selectOptions : List City -> Html Msg
selectOptions cities =
select [ on "change" ( Json.map (\city -> GetDistrictsMsg city) targetValue ) ]
(List.map setOption cities)
setOption : City -> Html Msg
setOption city =
option [ value city.name ]
[ text city.name ]
init : String -> (Model, Cmd Msg)
init topic =
( Model topic "waiting.gif"
, getRandomGif topic
)