如何在 Elm 中使用 Window.dimensions 初始化模型?
How to initialize the model using Window.dimensions in Elm?
在滑动益智游戏中,我想根据初始 window 尺寸设置初始图块大小(以最大化屏幕空间)。
换句话说,我想根据Window.dimensions
的初始值设置initialModel
。
我找不到如何做到这一点,最后使用端口获得初始 window 维度:
index.html
Elm.fullscreen(Elm.App, {
windowSize: [
document.documentElement.clientWidth,
document.documentElement.clientHeight
]
});
App.elm
port windowSize : (Int, Int)
initialModel =
-- some function of windowSize
model =
Signal.foldp update initialModel input
type Action
= WindowResize (Int, Int)
| ...
windowResize =
Signal.map WindowResize Window.dimensions
update action model =
case action of
WindowResize dimensions ->
{ model | some change based on dimensions }
...
有没有一种方法可以在不使用端口的情况下实现相同的结果?
您可以使用 Signal.Extra.foldp' from the Apanatshka/elm-signal-extra 包来检查基于输入信号初始值的模型初始值。
完全披露:我是那个包的作者。
在滑动益智游戏中,我想根据初始 window 尺寸设置初始图块大小(以最大化屏幕空间)。
换句话说,我想根据Window.dimensions
的初始值设置initialModel
。
我找不到如何做到这一点,最后使用端口获得初始 window 维度:
index.html
Elm.fullscreen(Elm.App, {
windowSize: [
document.documentElement.clientWidth,
document.documentElement.clientHeight
]
});
App.elm
port windowSize : (Int, Int)
initialModel =
-- some function of windowSize
model =
Signal.foldp update initialModel input
type Action
= WindowResize (Int, Int)
| ...
windowResize =
Signal.map WindowResize Window.dimensions
update action model =
case action of
WindowResize dimensions ->
{ model | some change based on dimensions }
...
有没有一种方法可以在不使用端口的情况下实现相同的结果?
您可以使用 Signal.Extra.foldp' from the Apanatshka/elm-signal-extra 包来检查基于输入信号初始值的模型初始值。
完全披露:我是那个包的作者。