【发布时间】:2016-09-27 12:27:17
【问题描述】:
我正在尝试创建一个高阶函数来创建仅捕获特定键代码的函数。该代码的灵感来自 Evan 的 onEnter 函数,该函数来自他的 todomvc 实现,该实现仅捕获 enter 函数。
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
现在我想将它添加到查看器中的输入组件中:
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)
]
[]
如果我只有onEnter,代码将按预期工作,但如果我添加onEsc,onEnter 代码将永远不会执行。我在哪里做错了?这是高阶函数上下文或在单独函数中具有多个值的“on”映射的问题吗?
【问题讨论】:
标签: functional-programming dom-events elm