Поиск…


замечания

Подписки - это средства для прослушивания входных данных. Входящие порты , события клавиатуры или мыши, сообщения WebSocket, изменения геолокации и видимости страницы, все могут служить в качестве входных данных.

Основная подписка на событие Time.every с «отпиской»

0.18.0

Модель передается под подпискам, что означает, что каждое изменение состояния может изменять подписки.

import Html exposing ( Html, div, text, button )
import Html.Events exposing ( onClick )
import Time

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

-- MODEL

type alias Model =
    { time: Time.Time
    , suspended: Bool
    }

init : (Model, Cmd Msg)
init =
    ( Model 0 False, Cmd.none )

-- UPDATE

type Msg
    = Tick Time.Time
    | SuspendToggle

update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
    case msg of
        Tick newTime ->
            ( { model | time = newTime }, Cmd.none )

        SuspendToggle ->
            ( { model | suspended = not model.suspended }, Cmd.none )

-- SUBSCRIPTIONS

subscriptions : Model -> Sub Msg
subscriptions model =
    if model.suspended then
        Sub.none
    else
        Time.every Time.second Tick

-- VIEW

view : Model -> Html Msg
view model =
    div []
        [ div [] [ text <| toString model ]
        , button [ onClick SuspendToggle ] [ text ( if model.suspended then "Resume" else "Suspend" ) ]
        ]


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow