2015-12-04 15 views
2

В настоящее время я экспериментировал с вяза (так считают меня новичка), и было интересно о следующем,Elm: Объединение как actions.signal и клавиатуры в foldp

Я определил следующую модель:

model = foldp update initialModel actions.signal 

Я понимаю, как работает foldp, он вызывает мой метод обновления для изменения initialModel всякий раз, когда действие выполняется (вызывается из моих кнопок html и т. Д.).

Однако теперь я пытаюсь выяснить, как я могу интегрировать нажатия клавиш в эту модель, поскольку foldp принимает только один изменяющийся сигнал.

Так что я хотел бы получить что-то вроде этого

model = foldp update initialModel (actions.signal + Keyboard.arrows) 

Я пытался играть с методом merge, но я просто не могу показаться, чтобы иметь возможность получить работу.

Спасибо!

ответ

2

Учитывая, что у вас есть actions почтовый ящик, есть ли у вас Action тип, определенный тоже? Затем вы можете развернуть его, чтобы включить в него действие Keypress:

type Action = 
    ... 
    | KeyPress { x : Int, y : Int } 

inputs = 
    Signal.merge actions.signal (Signal.map KeyPress Keyboard.arrows) 

model = 
    Signal.foldp update initialModel inputs 
+0

Это работает до совершенства! Благодаря! –