0

我正在构建我的第一个 Elm 应用程序,并根据以下来源对其进行构建:

我如何构建 elm 应用程序

以领域为重点的 NoMap 方法

这意味着我将我的Msg类型从我的主要函数映射Types.elm到我的子函数。做一个简单的onClick功能时看起来像这样

onClick (MsgForPieChart <| SelectSlice <| sliceModel.points)

现在我想在 init 上获取一些数据以供查看。

onClick我尝试遵循与简单函数相同的方法

getWarAndPeace : Cmd Msg
getWarAndPeace =
    Http.send (MsgForMuseums <| FetchedMuseums) <|
        Http.getString "https://example.com/books/war-and-peace.md"

我的主要类型如下所示:

type Msg
= MsgForPieChart Atom.PieChart.Types.Msg
| MsgForMuseums Organism.Museums.Types.Msg 
| NoOp

http对于请求,我的子函数类型看起来像这样

type Msg = 
FetchedMuseums (Result Http.Error String)

但无论我尝试什么,我都会不断收到这样的类型错误,Http.send或者Task我尝试的任何方法

Result Http.Error a -> App.Types.Msg

但它是:

App.Types.Msg

我的更新功能的结构如下:

update : App.Types.Msg -> Organism.Museums.Types.MuseumsModel -> Organism.Museums.Types.MuseumsModel
update msgFor model =
case msgFor of
    MsgForMuseums msg ->
        updateMuseums msg model
    _ ->
        model


updateMuseums : Organism.Museums.Types.Msg -> Organism.Museums.Types.MuseumsModel -> Organism.Museums.Types.MuseumsModel
updateMuseums msg model =
    case msg of
        FetchedMuseums data -> model

那么我如何http在初始化时为我的子函数获取请求,该函数使用 NoMap 模式进行组合Msg

4

1 回答 1

1

按照DogbertHttp.send (MsgForMuseums << FetchedMuseums)的建议使用确实解决了这个问题

于 2018-07-03T19:56:38.137 回答