我正在尝试使用"按钮"示例(http://elm-lang.org/examples/buttons)并从另一个模块中导入它,该模块将在同一页面上显示多个模块。
我担心我仍在考虑组件,但我还是想分享它。
我创建了Main.elm,它加载了一个稍微修改过的按钮示例版本(Buttons.elm)。
在Main.elm中,我有一个Buttons.Model列表,用于生成按钮列表。
我现在被困了,因为我不知道如何从Main.elm中的Buttons.Msg获取必要的信息
要查看代码:
$ git clone https://github.com/lucamug/elm-multiple-buttons.git
$ cd elm-multiple-buttons/
$ elm-package install
$ elm-reactor
然后打开
- 解决方案
正如Chad Gilber在接受的答案中指出的那样,这个问题就在这一行:
(List.indexedMap (\position buttons -> Html.map Tag (Buttons.view position buttons)) model.buttonsList)
这是正确的版本
(List.indexedMap (\position buttons -> Html.map (Tag position) (Buttons.view buttons)) model.buttonsList)
如果您对此实施感兴趣,可以在此帖 https://medium.com/@l.mugnaini/recycling-elm-code-transforming-it-in-a-module-4946d5ccd3cd
中找到更多详细信息。答案 0 :(得分:2)
您需要更新Tag
构造函数以包含数组索引。
代码的相关更改是:
view model =
div []
(List.indexedMap (\position buttons -> Html.map (Tag position) (Buttons.view position buttons)) model.buttonsList)
type Msg
= Tag Int Buttons.Msg
update msg model =
case msg of
Tag position button_Msg ->
并且您要删除position = 1
功能中的硬编码update
。
This Pull Request概述了必要的更改。