This page covers Tutorial v2. Elm 0.18.

Main

Finally we need to wire everything in the Main module.

Change src/Main.elm to:

module Main exposing (..)

import Commands exposing (fetchPlayers)
import Models exposing (Model, initialModel)
import Msgs exposing (Msg)
import Navigation exposing (Location)
import Routing
import Update exposing (update)
import View exposing (view)


init : Location -> ( Model, Cmd Msg )
init location =
    let
        currentRoute =
            Routing.parseLocation location
    in
        ( initialModel currentRoute, fetchPlayers )


subscriptions : Model -> Sub Msg
subscriptions model =
    Sub.none


main : Program Never Model Msg
main =
    Navigation.program Msgs.OnLocationChange
        { init = init
        , view = view
        , update = update
        , subscriptions = subscriptions
        }

New imports

We added imports for Navigation and Routing.

Init

init : Location -> ( Model, Cmd Msg )
init location =
    let
        currentRoute =
            Routing.parseLocation location
    in
        ( initialModel currentRoute, fetchPlayers )

Our init function will now take an initial Location from the Navigation package. We parse this Location using the parseLocation function we created before. Then we store this initial route in our model.

main

main now uses Navigation.program instead of Html.program. Navigation.program wraps Html.program but also triggers a message when the browser location changes. In our case this message will be OnLocationChange.

results matching ""

    No results matching ""