type Msg
= NoOp
| RequestDate
| ReceiveDate Date
| UpdateYouTubeUrl YouTubeUrl
-- -
root : Maybe YouTubeUrl -> Html Msg
root youTubeUrl =
case youTubeUrl of
Just youTubeUrl ->
div []
[ player youTubeUrl
, urlInput
]
Nothing ->
urlInput
player : YouTubeUrl -> Html Msg
player youTubeUrl =
h1 [] [ text ("YouTube player for " ++ youTubeUrl ++ " goes here") ]
urlInput : Html (YouTubeUrl -> Msg)
urlInput =
input
[ placeholder "(Enter a YouTube embed URL and hit <Enter>)"
, onSubmit UpdateYouTubeUrl
]
[]
Cela me donne une erreur d'incompatibilité de type:mismatch Elm Voir la liste
-- TYPE MISMATCH ---------------------------------- ./src/YouTubePlayer/View.elm
The 1st and 2nd entries in this list are different types of values.
28| [ player youTubeUrl
29|> , urlInput
30| ]
The 1st entry has this type:
Html (Msg)
But the 2nd is:
Html (YouTubeUrl -> Msg)
Hint: It looks like a function needs 1 more argument.
Hint: Every entry in a list needs to be the same type of value. This way you
never run into unexpected values partway through. To mix different types in a
single list, create a "union type" as described in:
<http://guide.elm-lang.org/types/union_types.html>
Detected errors in 1 module.
L'erreur est assez clair que le problème est que j'ai une liste de
[ Html Msg
, Html (YouTubeUrl -> Msg)
]
.. où les listes dans Elm doivent être homogènes, mais ce que je ne comprends pas est pourquoi Html (YouTubeUrl -> Msg)
est la signature de type pour urlInput
. Je suppose que cela a quelque chose à voir avec mon utilisation de onSubmit
. Je suis un débutant d'orme ici, donc je ne suis pas sûr de ce que je fais mal. Le Elm Guide book n'a aucun type d'exemple qui ressemble à Html (a -> Msg)
que j'ai vu.
elm 0.18
Ahh, je vois la différence maintenant. J'allais enrouler 'onSubmit' dans un formulaire, puisque je ne veux pas déclencher' onInput' mais plutôt appuyer sur une touche Entrée; figuré le moyen le plus facile était de se brancher sur un «onSubmit». – neezer
Pourriez-vous poster un exemple de comment faire cela avec 'onSubmit' s'il vous plait? – neezer