scala.js jquery facade 通过触发器发送数据
scala.js jquery facade send data through trigger and on
如何使用 scala.js jquery facade 和触发器发送数据?
例如
$(dom.document).trigger("my-event", someData)
$(dom.document).on("my-event", (someData: ???) => {
println(someData)
})
我承认,我认为我自己从未使用过 trigger
的数据发送版本——您应该参考 the jQuery documentation 了解如何使用它的详细信息。所以这有点推测,您可能需要做一些实验。
也就是说,在 Scala 方面,签名主要说明了一切:
def trigger(eventType:String, extraParameters:Any*):JQuery = js.native
def on(events:String, handler: js.Function2[JQueryEventObject, Any, Any]): JQuery = js.native
trigger()
可以接受任何数据参数,它将被传递到 on()
as Any
的处理程序中。此版本的 on()
签名也需要 JQueryEventObject
。 (请注意,顺便说一句,还有一个用于将两个数据字段传递到 on()
的签名。我懒得写两个以上;如果有人需要的话,那是 reader 的练习.)
另请注意,由于 on()
的签名有点奇怪,它不能使用 jquery-facade 的 EventHandler
类型,它为自动转换 Scala 提供了魔法函数转换为 JS 函数。例如,如果这个处理程序刚刚接收到一个 JQueryEventObject
(就像大多数 jQuery 调用所做的那样),它将通过 jquery-facade 的 [=48= 中的这个函数变成一个 JS 函数]:
implicit def f12EventHandler(func:scala.Function1[JQueryEventObject, Any]):EventHandler = { func:js.Function1[JQueryEventObject, Any] }
由于 on()
的稀有数据接收版本没有标准版本,您必须手动指定调用类型,或者编写您自己的上述版本 implicit
对于这种情况。
所有这些意味着您上面的签名可能应该是:
$(dom.document).on("my-event", (evt:JQueryEventObject, someData: Any) => {
println(someData)
}:js.Function2[JQueryEventObject, Any, Any])
然后如果你需要做一些比 println
更有趣的事情,你应该使用模式匹配将 someData
缩小到实际预期的类型。请注意,我还没有测试过这个,但我认为它应该可以工作。
是的,这在 DOM 界面上有点松散;这就是使用并非设计为强类型的 JS 库的现实。
希望这对您有所帮助...
如何使用 scala.js jquery facade 和触发器发送数据?
例如
$(dom.document).trigger("my-event", someData)
$(dom.document).on("my-event", (someData: ???) => {
println(someData)
})
我承认,我认为我自己从未使用过 trigger
的数据发送版本——您应该参考 the jQuery documentation 了解如何使用它的详细信息。所以这有点推测,您可能需要做一些实验。
也就是说,在 Scala 方面,签名主要说明了一切:
def trigger(eventType:String, extraParameters:Any*):JQuery = js.native
def on(events:String, handler: js.Function2[JQueryEventObject, Any, Any]): JQuery = js.native
trigger()
可以接受任何数据参数,它将被传递到 on()
as Any
的处理程序中。此版本的 on()
签名也需要 JQueryEventObject
。 (请注意,顺便说一句,还有一个用于将两个数据字段传递到 on()
的签名。我懒得写两个以上;如果有人需要的话,那是 reader 的练习.)
另请注意,由于 on()
的签名有点奇怪,它不能使用 jquery-facade 的 EventHandler
类型,它为自动转换 Scala 提供了魔法函数转换为 JS 函数。例如,如果这个处理程序刚刚接收到一个 JQueryEventObject
(就像大多数 jQuery 调用所做的那样),它将通过 jquery-facade 的 [=48= 中的这个函数变成一个 JS 函数]:
implicit def f12EventHandler(func:scala.Function1[JQueryEventObject, Any]):EventHandler = { func:js.Function1[JQueryEventObject, Any] }
由于 on()
的稀有数据接收版本没有标准版本,您必须手动指定调用类型,或者编写您自己的上述版本 implicit
对于这种情况。
所有这些意味着您上面的签名可能应该是:
$(dom.document).on("my-event", (evt:JQueryEventObject, someData: Any) => {
println(someData)
}:js.Function2[JQueryEventObject, Any, Any])
然后如果你需要做一些比 println
更有趣的事情,你应该使用模式匹配将 someData
缩小到实际预期的类型。请注意,我还没有测试过这个,但我认为它应该可以工作。
是的,这在 DOM 界面上有点松散;这就是使用并非设计为强类型的 JS 库的现实。
希望这对您有所帮助...