【发布时间】:2016-12-15 18:05:16
【问题描述】:
我对 Elm 很陌生,刚刚看过 Elm 教程应用 https://github.com/sporto/elm-tutorial-app
我想知道如何在单击指定路线而不是路径的链接时更改页面。
这是路由
type Route
= HomeRoute
| NotFoundRoute
matchers : Parser (Route -> a) a
matchers =
oneOf
[ map HomeRoute top ]
parseLocation : Location -> Route
parseLocation location =
case (parsePath matchers location) of
Just route ->
route
Nothing ->
NotFoundRoute
现在我想在点击菜单链接时选择 HomeRoute
menuItems : List MenuItem
menuItems =
[ { text = "Dashboard", iconName = "dashboard", route = HomeRoute }
]
viewDrawerMenuItem : Model -> MenuItem -> Html Msg
viewDrawerMenuItem model menuItem =
Layout.link
[ Layout.onClick (NavigateTo menuItem.route)
, (Color.background <| Color.color Color.BlueGrey Color.S600) when (model.route == menuItem.route)
, Options.css "color" "rgba(255, 255, 255, 0.56)"
, Options.css "font-weight" "500"
]
[ Icon.view menuItem.iconName
[ Color.text <| Color.color Color.BlueGrey Color.S500
, Options.css "margin-right" "32px"
]
, text menuItem.text
]
我想实现 Msg NavigateTo 但不知道如何实现。
[ Layout.onClick (NavigateTo menuItem.route)
我可以创建一个更新 NavigateTo,它将路由作为字符串,然后让 Navigation 创建一个新的 Url。喜欢
NavigateTo path ->
(model, Navigation.newUrl path)
但我宁愿使用联合类型Route,而不是使用路径作为字符串。
【问题讨论】:
标签: elm