榆木:如何将HTML FooMsg转换为HTML Msg

Jes*_*ieh 2 elm

我是榆树新手。我有一个包含两个页面的网站:主页和注册。

主页拥有其自己的视图,而注册具有其自身的视图,但是它们都返回Html Msg。我想更改它,以便Home返回Html HomeMsg和Signup返回Html SignupMsg

当然,编写这些视图函数很容易,但是我认为我的顶级视图函数需要将结果转换为Html Msg

这是Msg类型。

type Msg 
  = Home HomeMsg
  | Signup SignupMsg
  | OnLocationChange Location
Run Code Online (Sandbox Code Playgroud)

我想我需要某种map功能来做到这一点

view : Model -> Html Msg 
view model =
    case model.route of
        Model.HomeRoute ->
            map Home (homeView model)

        Model.SignupRoute ->
            map Signup (signupView model)

        Model.NotFoundRoute ->
            notFoundView
Run Code Online (Sandbox Code Playgroud)

Tos*_*osh 5

是的,有一个map功能。它属于Html模块。

http://package.elm-lang.org/packages/elm-lang/html/2.0.0/Html#map

您的代码变为:

view : Model -> Html Msg 
view model =
    case model.route of
        Model.HomeRoute ->
            Html.map Home (homeView model)

        Model.SignupRoute ->
            Html.map Signup (signupView model)

        Model.NotFoundRoute ->
            notFoundView
Run Code Online (Sandbox Code Playgroud)