2017-05-05 86 views
0

我正在嘗試使用「按鈕」示例(http://elm-lang.org/examples/buttons),並將其從另一個模塊中導入,該模塊可以在同一頁面上顯示其中的幾個模塊。如何從導入模塊的消息中提取信息?

恐怕我還在腦海中想着組件,但我只是想分享它。

我創建了Main.elm,它加載了一個稍微修改過的按鈕示例(Buttons.elm)。

在Main.elm中,我有一個Buttons.Model的列表,用於生成按鈕列表。

我stucked現在,因爲我不知道如何從Buttons.Msg獲得必要的信息在Main.elm

看到代碼:

$ git clone https://github.com/lucamug/elm-multiple-buttons.git 
$ cd elm-multiple-buttons/ 
$ elm-package install 
$ elm-reactor 

和開放

- 解決方案

的問題,如接受的回答中指出,乍得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 = 1update功能。

This Pull Request概述了必要的更改。

+0

它的作品,太棒了!謝謝 – Lucamug