我无法找到使用scala-js创建自定义事件的方法。例如,使用js,您可以创建如下所示的自定义事件(取自此处):
var event = new CustomEvent('build', { 'detail': elem.dataset.time });
但是,scala-js中没有CustomerEvent
或Event
的构造函数接受参数。另外,子类化如:
class DrawEvent extends Event {
override def `type` = "draw"
}
导致
未捕获的TypeError:undefined不是函数
尝试通过new DrawEvent()
构建时
有什么想法吗?
答案 0 :(得分:1)
要在ScalaJs中实例化javascript类,必须使用js.Dynamic.newInstance:
这适用于您的用例:
val event = js.Dynamic.newInstance(js.Dynamic.global.CustomEvent)("build", js.Dynamic.literal(detail = elem.dataset.time)).asInstanceOf[js.dom.CustomEvent]
在备注部分(一直在底部)有更多信息: http://www.scala-js.org/doc/calling-javascript.html
以下是使用某些导入使其缩短的相同解决方案
import js.Dynamic.{ global => g, newInstance => jsnew, literal => lit }
val event = jsnew(g.CustomEvent)("build", lit(detail = elem.dataset.time)).asInstanceOf[js.dom.CustomEvent]
答案 1 :(得分:1)