相关疑难解决方法(0)

使用elm高阶函数进行键盘事件

我正在尝试创建一个更高阶的函数来创建函数来捕获特定的密钥代码.该代码的灵感来自于他的todomvc实现中的Evan的"onEnter"功能,该功能仅捕获输入功能.

onKeyCode : Int -> Msg -> Attribute Msg
onKeyCode keycode msg =
    let
        captureKey code =
            if code == keycode then
                msg
            else
                NoOp
    in
        on "keydown" (Json.map captureKey keyCode)

onEnter = onKeyCode 13
onEsc =  onKeyCode 27
Run Code Online (Sandbox Code Playgroud)

现在我想将它添加到查看器中的输入组件:

input
 [ class "edit"
 , id ("todo-" ++ toString item.uid)
 , value item.message
 , onInput (UpdateItem item.uid)
 , onBlur (SwitchEditTodo item.uid False)
 , onEnter (SwitchEditTodo item.uid False)
 , onEsc (UndoEditTodo item.uid)
 ]
[]
Run Code Online (Sandbox Code Playgroud)

如果我只有onEnter,代码将按预期工作,但如果我添加onEsc,onEnter代码永远不会执行.我在哪里做错了?是高阶函数上下文的问题还是在单独的函数中使用多个值进行"on"映射?

functional-programming javascript-events elm

8
推荐指数
1
解决办法
441
查看次数