J'essaie d'apprendre Elm, et j'ai essayé de trouver la meilleure façon d'architecturer une application évolutive. En ce qui concerne le routage, je veux avoir une logique simple rendant les différentes vues en fonction du courant route
, en mettant l'accent sur la logique simple. Cependant, à l'intérieur de certaines de mes vues, je veux changer l'itinéraire en fonction du modèle. Par exemple, dans ma vue Players
, je veux seulement le rendre si j'ai reçu des données du serveur. Si la demande est en attente ou a échoué, je voudrais afficher une page d'erreur. Je réalise que je pourrais exécuter cette logique à l'intérieur de la vue Players
, mais je préférerais envoyer un message au modèle pour changer l'itinéraire à une vue différente. Je sais seulement comment envoyer des messages d'événements (onClick
, etc ...). Est-ce possible ou est-ce que je travaille en dehors des conceptions de la langue?Comment envoyer un message en elm (sans un événement)
Ceci est ma configuration actuelle, mais je voudrais changer
Nothing ->
notFoundView
Pour envoyer un message qui change la route
base Voir
view : Model -> Html Msg
view model =
div []
[ page model
]
page : Model -> Html Msg
page model =
case model.route of
PlayersRoute ->
listView model.playersModel.players
PlayerRoute id ->
editView model id
NotFoundRoute ->
notFoundView
Joueurs Voir
editView : Model -> PlayerId -> Html Msg
editView model id =
case model.playersModel.players of
NotAsked ->
text ""
Loading ->
text "Loading ..."
Failure err ->
text (toString err)
Success players ->
let
maybePlayer =
players
|> List.filter(\player -> player.id == id)
|> List.head
in
case maybePlayer of
Just player ->
core player
Nothing ->
notFoundView
Merci d'avance pour toute aide!
Merci! Désolé pour la réponse tardive, j'espérais éviter cela mais je n'ai jamais trouvé de solution, donc c'est le meilleur compromis que j'ai vu – Right2Drive