Elm Language
Подписки
Поиск…
замечания
Подписки - это средства для прослушивания входных данных. Входящие порты , события клавиатуры или мыши, сообщения 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