嗨,假设我有一个ID为form-submit的按钮,并且我的OCaml文件中具有以下功能:

let () =
   let form_submit = Dom_html.getElementById "form-submit" in
   ...

向按钮添加on_click方法的正确方法是什么?我应该做这样的事情吗?
  form_submit##onclick <- ...

但是处理程序函数的类型是什么?我在文档中找不到它。

最佳答案

您可以手动使用dom东西,但这不是很方便。正确的方法是使用 Lwt_js_events 模块,该模块在使用Lwt的事件处理程序上建立抽象。

这是一个最小的示例:

Lwt.async (fun () ->
  Lwt_js_events.clicks form_submit
    (fun _ev _thread -> Lwt.return () )
  )

第一个参数是事件对象,第二个参数是循环线程。您可以在开始时使用常规构造来非常精细地调整处理程序的行为。

这里的Lwt.async确保处理程序将在“良好时”放置(在这种情况下,当lwt调度程序启动时)。最好使用它而不是忽略结果,因为它可以确保正确的调度。

09-19 02:05