トリガーとオンの両方でscala.js jqueryファサードのデータを送信するにはどうすればよいですか?私は告白する例scala.js jqueryファサードは、トリガーを介してデータを送信します。
$(dom.document).trigger("my-event", someData)
$(dom.document).on("my-event", (someData: ???) => {
println(someData)
})
トリガーとオンの両方でscala.js jqueryファサードのデータを送信するにはどうすればよいですか?私は告白する例scala.js jqueryファサードは、トリガーを介してデータを送信します。
$(dom.document).trigger("my-event", someData)
$(dom.document).on("my-event", (someData: ???) => {
println(someData)
})
ため
、私は私が今までtrigger
のデータ送信バージョンを自分自身を使用していたとは思わない - あなたはそれを使用する方法の詳細についてはthe jQuery documentationを参照する必要があります。これは少し投機的なもので、実験をする必要があるかもしれません。 Scalaの側で、署名は主に自分自身のために話す、と述べ
:
trigger()
は、任意のデータのパラメータを取ることができ、そしてそれはAny
としてon()
のハンドラに渡されます。 on()
のこのバージョンの署名では、JQueryEventObject
も想定されています。 (注:また、2つのデータフィールドをon()
に渡すためのシグネチャもありますが、2つ以上を書くのは面倒ではありませんでした)。
on()
のシグネチャは少し奇妙なので、jquery-facadeのEventHandler
型は使用できません。これはScala関数をJSに自動変換するための魔法を提供します。このハンドラは、ちょうど(ほとんどのjQueryの呼び出しがそうであるように)JQueryEventObject
を受けていた場合、例えば、それはjqueryの - ファサードのpackage.scalaで、この機能によって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ライブラリを使って作業する現実です。
希望します。