Elm Language
Abonnements
Suche…
Bemerkungen
Abonnements sind Mittel zum Abhören von Eingaben. Eingehende Ports , Tastatur- oder Mausereignisse, WebSocket-Nachrichten, Geolocation und Änderungen der Seitensichtbarkeit können alle als Eingaben dienen.
Grundlegendes Abonnement für Time.every Ereignis mit 'Abbestellen'
0,18,0
Das Modell wird an Abonnements übergeben. Dies bedeutet, dass jede Statusänderung Abonnements ändern kann.
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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow