Nouveau pour l'orme. En utilisant l'orme 0.18.mise à jour modèle avec paramètre en orme 0,18
Ceci est un SPA très simple avec 12 boutons (chacun avec une valeur de note de musique). Vous cliquez sur le bouton et il affiche la note sur laquelle vous avez cliqué.
Je voudrais faire cela en affectant une fonction Put
à un bouton via onClick
, puis en lui passant un paramètre de chaîne note
qui s'utilise pour mettre à jour le modèle.
Voici mon code:
import Html exposing (div, beginnerProgram, text, button)
import Html.Events exposing (onClick)
import List exposing (..)
main =
beginnerProgram { model = model, update = update, view = view }
-- model
model =
{ key = "C" }
keys =
["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"]
-- update
type Action = Put
update msg model =
case msg note of
Put ->
{ model | key = note }
-- view
makeButton note =
button [ onClick Put note ] [text note]
view model =
div [] [
div [] [text (toString model.key)],
div [] (map makeButton keys)
]
Je reçois cette erreur:
-- NAMING ERROR -------------------------------------------------- musiccalc.elm
Cannot find variable `note`
19| case msg note of
Ouais. Aussi, je pense qu'il serait mieux si vous définissez les clés comme un type d'union où 'type Key = C | C# | D | D # | ... 'et ensuite vous pouvez définir votre' type Action' comme 'type Action = Put Key'. Qu'est-ce que tu penses? – gabrielperales
@gabrielperales Bel exemple de TDD dans Elm. Type Driven Development: P Le modèle serait également 'type Model: Key' et' model = C# '. – cDitch