In un gioco di puzzle scorrevole, vorrei impostare la dimensione iniziale della tessera in base alle dimensioni iniziali della finestra (per massimizzare lo spazio sullo schermo).Come inizializzare il modello usando Window.dimensions in Elm?
In altre parole, mi piacerebbe impostare initialModel
sulla base del valore iniziale del Window.dimensions
.
non riuscivo a trovare il modo di fare questo, e ha finito per utilizzare le porte per ottenere le dimensioni della finestra iniziale:
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 }
...
C'è un modo per ottenere lo stesso risultato senza utilizzare le porte?
Quindi posso vedere come questo mi consente di accedere al valore iniziale all'interno del secondo fn passato a foldp '. Ma non sono sicuro di cosa posso fare utilmente con quel valore per farlo entrare nel mio modello. Un piccolo esempio di codice sarebbe molto utile perché penso che mi manchi qualcosa ... –
@JulianJelfs La seconda funzione ti consente di trasformare un valore iniziale in un valore del tuo modello. Quindi in quella funzione si inserisce quel valore iniziale nel modello, quindi nella funzione passo si consuma il modello normalmente. – Apanatshka
OK, grazie mille per il suggerimento extra. –