Cette page couvre Elm 0.18
Main
Enfin, il nous reste à brancher tout ça ensemble dans le module Main.
Modifiez src/Main.elm comme ceci :
module Main exposing (..)
import Messages exposing (Msg(..))
import Models exposing (Model, initialModel)
import Navigation exposing (Location)
import Players.Commands exposing (fetchAll)
import Routing exposing (Route)
import Update exposing (update)
import View exposing (view)
init : Location -> ( Model, Cmd Msg )
init location =
let
currentRoute =
Routing.parseLocation location
in
( initialModel currentRoute, Cmd.map PlayersMsg fetchAll )
subscriptions : Model -> Sub Msg
subscriptions model =
Sub.none
main : Program Never Model Msg
main =
Navigation.program OnLocationChange
{ init = init
, view = view
, update = update
, subscriptions = subscriptions
}
Nouveaux imports
Nous avons ajouté les imports pour Navigation et Routing.
Init
init : Location -> ( Model, Cmd Msg )
init location =
let
currentRoute =
Routing.parseLocation location
in
( initialModel currentRoute, Cmd.map PlayersMsg fetchAll )
Notre fonction init prend désormais une Location en entrée venant de Navigation. Nous analysons cette Location en utilisant la fonction parseLocation que nous avons créée auparavant. Nous stockons ensuite cette Route initiale dans notre modèle.
main
main utilise désormais Navigation.program plutôt que Html.program. Navigation.program enveloppe Html.program et déclenche un message lorsque l'adresse du navigateur change. Dans notre cas, ce message sera OnLocationChange.