在 elm 的 urlUpdate 上加载不同的资源
Load different resources on urlUpdate elm
我是 elm 和函数式编程的新手。希望这是一个简单的问题。我想做的是,当我更改视图时,我希望 elm 根据即将更改为的视图获取记录。我希望我可以在基于 currentRoute 的 urlUpdate 方法中完成它。我有两种观点,一种是针对玩家的,另一种是针对津贴的,两者都有独立的命令对象。我试着这样做:
urlUpdate : Result String Route -> Model -> ( Model, Cmd Msg )
urlUpdate result model =
let
currentRoute =
Routing.routeFromResult result
_ =
Debug.log "Current Route" currentRoute
in
if toString currentRoute == "PerksRoute" then
( { model | route = currentRoute }
, Perks.Commands.fetchAll
)
else if toString currentRoute == "PlayersRoute" then
( { model | route = currentRoute }
, Players.Commands.fetchAll
)
else
( { model | route = currentRoute }, Cmd.none )
但是我得到这个错误:
The 1st branch has this type:
( { a | route : Route }, Cmd Perks.Messages.Msg )
But the 2nd is:
( { a | route : Route }, Cmd Players.Messages.Msg )
我不确定为什么会这样,我认为将此类型定义为 就可以了。
type Msg
= PlayersMsg Players.Messages.Msg
| PerksMsg Perks.Messages.Msg
这是完整的src
您需要使用 Cmd.map
将子命令映射到父命令:
if toString currentRoute == "PerksRoute" then
( { model | route = currentRoute }
, Cmd.map PerksMsg Perks.Commands.fetchAll
)
else if toString currentRoute == "PlayersRoute" then
( { model | route = currentRoute }
, Cmd.map PlayersMsg Players.Commands.fetchAll
)
我是 elm 和函数式编程的新手。希望这是一个简单的问题。我想做的是,当我更改视图时,我希望 elm 根据即将更改为的视图获取记录。我希望我可以在基于 currentRoute 的 urlUpdate 方法中完成它。我有两种观点,一种是针对玩家的,另一种是针对津贴的,两者都有独立的命令对象。我试着这样做:
urlUpdate : Result String Route -> Model -> ( Model, Cmd Msg )
urlUpdate result model =
let
currentRoute =
Routing.routeFromResult result
_ =
Debug.log "Current Route" currentRoute
in
if toString currentRoute == "PerksRoute" then
( { model | route = currentRoute }
, Perks.Commands.fetchAll
)
else if toString currentRoute == "PlayersRoute" then
( { model | route = currentRoute }
, Players.Commands.fetchAll
)
else
( { model | route = currentRoute }, Cmd.none )
但是我得到这个错误:
The 1st branch has this type:
( { a | route : Route }, Cmd Perks.Messages.Msg )
But the 2nd is:
( { a | route : Route }, Cmd Players.Messages.Msg )
我不确定为什么会这样,我认为将此类型定义为 就可以了。
type Msg
= PlayersMsg Players.Messages.Msg
| PerksMsg Perks.Messages.Msg
这是完整的src
您需要使用 Cmd.map
将子命令映射到父命令:
if toString currentRoute == "PerksRoute" then
( { model | route = currentRoute }
, Cmd.map PerksMsg Perks.Commands.fetchAll
)
else if toString currentRoute == "PlayersRoute" then
( { model | route = currentRoute }
, Cmd.map PlayersMsg Players.Commands.fetchAll
)