成功后,我在elm-make
浏览器中收到以下错误:
无法读取未定义的属性“孩子”
我认为这是因为我对信号有循环依赖:
model -> clicks -> model
以下是相关代码:
model : Signal Model
model =
Signal.foldp update initialModel clicks
clicks : Signal Action
clicks =
let
clickPosition = Mouse.position
|> Signal.sampleOn Mouse.clicks
tuplesSignal = Signal.map3 (,,) clickPosition Window.dimensions model
in
...
感觉就像model
是在 Elm 中实现的一种常见做法,所以我应该挑战clicks -> model
依赖。
这是一些上下文:
我正在使用画布构建一个滑动益智游戏:
当用户单击可以移动的图块时,它应该会移动。否则,点击应该被忽略。
clicks
将产生以下动作:Left
, Right
, Up
,Down
例如,如果用户点击图块 12、11、8、15(按此顺序),clicks
则应为:Down -> Right -> Up
问题是,为了计算点击了哪个图块,我需要知道板的尺寸(例如上图中的 4 行和 4 列)。但是,板尺寸存储在model
(想象允许用户更改板尺寸的用户界面)中。
如何摆脱这种循环依赖?